]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-rx.c
OpenFlow: Have a function for each message type.
[tcpdump] / print-rx.c
index 6ae17cf76b10873e56daaea5c64d613b5278165e..4f0195282ff6340db97a2f2bd23ef74225e02d28 100644 (file)
@@ -65,6 +65,7 @@
 #define VLNAMEMAX 65
 #define KANAMEMAX 64
 #define BOSNAMEMAX 256
+#define USERNAMEMAX 1024               /* AFSOPAQUEMAX was used for this; does it need to be this big? */
 
 #define        PRSFS_READ              1 /* Read files */
 #define        PRSFS_WRITE             2 /* Write files */
@@ -482,7 +483,7 @@ struct rx_cache_entry {
        uint32_t        callnum;        /* Call number (net order) */
        uint32_t        client;         /* client IP address (net order) */
        uint32_t        server;         /* server IP address (net order) */
-       u_int           dport;          /* server port (host order) */
+       uint16_t        dport;          /* server UDP port (host order) */
        uint16_t        serviceId;      /* Service identifier (net order) */
        uint32_t        opcode;         /* RX opcode (host order) */
 };
@@ -493,9 +494,9 @@ static struct rx_cache_entry        rx_cache[RX_CACHE_SIZE];
 
 static uint32_t        rx_cache_next = 0;
 static uint32_t        rx_cache_hint = 0;
-static void    rx_cache_insert(netdissect_options *, const u_char *, const struct ip *, u_int);
+static void    rx_cache_insert(netdissect_options *, const u_char *, const struct ip *, uint16_t);
 static int     rx_cache_find(netdissect_options *, const struct rx_header *,
-                             const struct ip *, uint32_t, uint32_t *);
+                             const struct ip *, uint16_t, uint32_t *);
 
 static void fs_print(netdissect_options *, const u_char *, u_int);
 static void fs_reply_print(netdissect_options *, const u_char *, u_int, uint32_t);
@@ -526,7 +527,7 @@ static int is_ubik(uint32_t);
 
 void
 rx_print(netdissect_options *ndo,
-         const u_char *bp, u_int length, u_int sport, u_int dport,
+         const u_char *bp, u_int length, uint16_t sport, uint16_t dport,
          const u_char *bp2)
 {
        const struct rx_header *rxh;
@@ -684,7 +685,7 @@ rx_print(netdissect_options *ndo,
 
 static void
 rx_cache_insert(netdissect_options *ndo,
-                const u_char *bp, const struct ip *ip, u_int dport)
+                const u_char *bp, const struct ip *ip, uint16_t dport)
 {
        struct rx_cache_entry *rxent;
        const struct rx_header *rxh = (const struct rx_header *) bp;
@@ -714,7 +715,7 @@ rx_cache_insert(netdissect_options *ndo,
 
 static int
 rx_cache_find(netdissect_options *ndo, const struct rx_header *rxh,
-             const struct ip *ip, u_int sport, uint32_t *opcode)
+             const struct ip *ip, uint16_t sport, uint32_t *opcode)
 {
        uint32_t i;
        struct rx_cache_entry *rxent;
@@ -765,7 +766,6 @@ rx_cache_find(netdissect_options *ndo, const struct rx_header *rxh,
                }
 
 #define STROUT(MAX) { uint32_t _i; \
-                       ND_TCHECK_LEN(bp, sizeof(uint32_t)); \
                        _i = GET_BE_U_4(bp); \
                        if (_i > (MAX)) \
                                goto trunc; \
@@ -778,28 +778,24 @@ rx_cache_find(netdissect_options *ndo, const struct rx_header *rxh,
                }
 
 #define INTOUT() { int32_t _i; \
-                       ND_TCHECK_4(bp); \
                        _i = GET_BE_S_4(bp); \
                        bp += sizeof(int32_t); \
                        ND_PRINT(" %d", _i); \
                }
 
 #define UINTOUT() { uint32_t _i; \
-                       ND_TCHECK_4(bp); \
                        _i = GET_BE_U_4(bp); \
                        bp += sizeof(uint32_t); \
                        ND_PRINT(" %u", _i); \
                }
 
 #define UINT64OUT() { uint64_t _i; \
-                       ND_TCHECK_LEN(bp, sizeof(uint64_t)); \
                        _i = GET_BE_U_8(bp); \
                        bp += sizeof(uint64_t); \
                        ND_PRINT(" %" PRIu64, _i); \
                }
 
 #define DATEOUT() { time_t _t; struct tm *tm; char str[256]; \
-                       ND_TCHECK_4(bp); \
                        _t = (time_t) GET_BE_S_4(bp); \
                        bp += sizeof(int32_t); \
                        tm = localtime(&_t); \
@@ -902,7 +898,6 @@ fs_print(netdissect_options *ndo,
         * gleaned from fsint/afsint.xg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        fs_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" fs call %s", tok2str(fs_req, "op#%u", fs_op));
@@ -954,11 +949,10 @@ fs_print(netdissect_options *ndo,
                {
                        char a[AFSOPAQUEMAX+1];
                        FIDOUT();
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_TCHECK_LEN(bp, i);
-                       i = min(AFSOPAQUEMAX, i);
+                       i = ND_MIN(AFSOPAQUEMAX, i);
                        strncpy(a, (const char *) bp, i);
                        a[i] = '\0';
                        acl_print(ndo, (u_char *) a, (u_char *) a + i);
@@ -1011,7 +1005,6 @@ fs_print(netdissect_options *ndo,
                case 65536:     /* Inline bulk stat */
                {
                        uint32_t j;
-                       ND_TCHECK_4(bp);
                        j = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
 
@@ -1090,11 +1083,10 @@ fs_reply_print(netdissect_options *ndo,
                case 131:       /* Fetch ACL */
                {
                        char a[AFSOPAQUEMAX+1];
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_TCHECK_LEN(bp, i);
-                       i = min(AFSOPAQUEMAX, i);
+                       i = ND_MIN(AFSOPAQUEMAX, i);
                        strncpy(a, (const char *) bp, i);
                        a[i] = '\0';
                        acl_print(ndo, (u_char *) a, (u_char *) a + i);
@@ -1121,7 +1113,6 @@ fs_reply_print(netdissect_options *ndo,
                 */
                int32_t errcode;
 
-               ND_TCHECK_4(bp);
                errcode = GET_BE_S_4(bp);
                bp += sizeof(int32_t);
 
@@ -1158,7 +1149,7 @@ acl_print(netdissect_options *ndo,
 {
        int pos, neg, acl;
        int n, i;
-       char user[AFSOPAQUEMAX+1];
+       char user[USERNAMEMAX+1];
 
        if (sscanf((char *) s, "%d %d\n%n", &pos, &neg, &n) != 2)
                return;
@@ -1183,7 +1174,7 @@ acl_print(netdissect_options *ndo,
                  acl & PRSFS_ADMINISTER ? "a" : "");
 
        for (i = 0; i < pos; i++) {
-               if (sscanf((char *) s, "%" NUMSTRINGIFY(AFSOPAQUEMAX) "s %d\n%n", user, &acl, &n) != 2)
+               if (sscanf((char *) s, "%" NUMSTRINGIFY(USERNAMEMAX) "s %d\n%n", user, &acl, &n) != 2)
                        return;
                s += n;
                ND_PRINT(" +{");
@@ -1196,7 +1187,7 @@ acl_print(netdissect_options *ndo,
        }
 
        for (i = 0; i < neg; i++) {
-               if (sscanf((char *) s, "%" NUMSTRINGIFY(AFSOPAQUEMAX) "s %d\n%n", user, &acl, &n) != 2)
+               if (sscanf((char *) s, "%" NUMSTRINGIFY(USERNAMEMAX) "s %d\n%n", user, &acl, &n) != 2)
                        return;
                s += n;
                ND_PRINT(" -{");
@@ -1230,7 +1221,6 @@ cb_print(netdissect_options *ndo,
         * gleaned from fsint/afscbint.xg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        cb_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" cb call %s", tok2str(cb_req, "op#%u", cb_op));
@@ -1246,7 +1236,6 @@ cb_print(netdissect_options *ndo,
                case 204:               /* Callback */
                {
                        uint32_t j, t;
-                       ND_TCHECK_4(bp);
                        j = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
 
@@ -1259,7 +1248,6 @@ cb_print(netdissect_options *ndo,
                        if (j == 0)
                                ND_PRINT(" <none!>");
 
-                       ND_TCHECK_4(bp);
                        j = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
 
@@ -1271,7 +1259,6 @@ cb_print(netdissect_options *ndo,
                                INTOUT();
                                ND_PRINT(" expires");
                                DATEOUT();
-                               ND_TCHECK_4(bp);
                                t = GET_BE_U_4(bp);
                                bp += sizeof(uint32_t);
                                tok2str(cb_types, "type %u", t);
@@ -1364,7 +1351,6 @@ prot_print(netdissect_options *ndo,
         * gleaned from ptserver/ptint.xg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        pt_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" pt");
@@ -1417,7 +1403,6 @@ prot_print(netdissect_options *ndo,
                case 504:       /* Name to ID */
                {
                        uint32_t j;
-                       ND_TCHECK_4(bp);
                        j = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
 
@@ -1439,7 +1424,6 @@ prot_print(netdissect_options *ndo,
                {
                        uint32_t j;
                        ND_PRINT(" ids:");
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        for (j = 0; j < i; j++)
@@ -1531,7 +1515,6 @@ prot_reply_print(netdissect_options *ndo,
                {
                        uint32_t j;
                        ND_PRINT(" ids:");
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        for (j = 0; j < i; j++)
@@ -1543,7 +1526,6 @@ prot_reply_print(netdissect_options *ndo,
                case 505:               /* ID to name */
                {
                        uint32_t j;
-                       ND_TCHECK_4(bp);
                        j = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
 
@@ -1568,7 +1550,6 @@ prot_reply_print(netdissect_options *ndo,
                case 519:               /* Get host CPS */
                {
                        uint32_t j;
-                       ND_TCHECK_4(bp);
                        j = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        for (i = 0; i < j; i++) {
@@ -1620,7 +1601,6 @@ vldb_print(netdissect_options *ndo,
         * gleaned from vlserver/vldbint.xg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        vldb_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" vldb");
@@ -1650,7 +1630,6 @@ vldb_print(netdissect_options *ndo,
                case 518:       /* Get entry by ID N */
                        ND_PRINT(" volid");
                        INTOUT();
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        if (i <= 2)
@@ -1670,7 +1649,6 @@ vldb_print(netdissect_options *ndo,
                case 520:       /* Replace entry N */
                        ND_PRINT(" volid");
                        INTOUT();
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        if (i <= 2)
@@ -1746,7 +1724,6 @@ vldb_reply_print(netdissect_options *ndo,
                        ND_TCHECK_4(bp);
                        bp += sizeof(uint32_t);
                        ND_PRINT(" numservers");
-                       ND_TCHECK_4(bp);
                        nservers = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_PRINT(" %u", nservers);
@@ -1760,7 +1737,6 @@ vldb_reply_print(netdissect_options *ndo,
                        }
                        ND_PRINT(" partitions");
                        for (i = 0; i < 8; i++) {
-                               ND_TCHECK_4(bp);
                                j = GET_BE_U_4(bp);
                                if (i < nservers && j <= 26)
                                        ND_PRINT(" %c", 'a' + j);
@@ -1794,7 +1770,6 @@ vldb_reply_print(netdissect_options *ndo,
                {       uint32_t nservers, j;
                        VECOUT(VLNAMEMAX);
                        ND_PRINT(" numservers");
-                       ND_TCHECK_4(bp);
                        nservers = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_PRINT(" %u", nservers);
@@ -1808,7 +1783,6 @@ vldb_reply_print(netdissect_options *ndo,
                        }
                        ND_PRINT(" partitions");
                        for (i = 0; i < 13; i++) {
-                               ND_TCHECK_4(bp);
                                j = GET_BE_U_4(bp);
                                if (i < nservers && j <= 26)
                                        ND_PRINT(" %c", 'a' + j);
@@ -1831,7 +1805,6 @@ vldb_reply_print(netdissect_options *ndo,
                {       uint32_t nservers, j;
                        VECOUT(VLNAMEMAX);
                        ND_PRINT(" numservers");
-                       ND_TCHECK_4(bp);
                        nservers = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_PRINT(" %u", nservers);
@@ -1849,7 +1822,6 @@ vldb_reply_print(netdissect_options *ndo,
                        bp += 4 * 13;
                        ND_PRINT(" partitions");
                        for (i = 0; i < 13; i++) {
-                               ND_TCHECK_4(bp);
                                j = GET_BE_U_4(bp);
                                if (i < nservers && j <= 26)
                                        ND_PRINT(" %c", 'a' + j);
@@ -1902,7 +1874,6 @@ kauth_print(netdissect_options *ndo,
         * gleaned from kauth/kauth.rg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        kauth_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" kauth");
@@ -1944,7 +1915,6 @@ kauth_print(netdissect_options *ndo,
                        INTOUT();
                        ND_PRINT(" domain");
                        STROUT(KANAMEMAX);
-                       ND_TCHECK_4(bp);
                        i = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_TCHECK_LEN(bp, i);
@@ -2022,11 +1992,6 @@ kauth_reply_print(netdissect_options *ndo,
                ND_PRINT(" errcode");
                INTOUT();
        }
-
-       return;
-
-trunc:
-       ND_PRINT(" [|kauth]");
 }
 
 /*
@@ -2047,7 +2012,6 @@ vol_print(netdissect_options *ndo,
         * gleaned from volser/volint.xg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        vol_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" vol call %s", tok2str(vol_req, "op#%u", vol_op));
@@ -2199,7 +2163,6 @@ vol_print(netdissect_options *ndo,
                        DATEOUT();
                        {
                                uint32_t i, j;
-                               ND_TCHECK_4(bp);
                                j = GET_BE_U_4(bp);
                                bp += sizeof(uint32_t);
                                for (i = 0; i < j; i++) {
@@ -2329,7 +2292,6 @@ vol_reply_print(netdissect_options *ndo,
                        case 121:       /* List one volume */
                                {
                                        uint32_t i, j;
-                                       ND_TCHECK_4(bp);
                                        j = GET_BE_U_4(bp);
                                        bp += sizeof(uint32_t);
                                        for (i = 0; i < j; i++) {
@@ -2383,7 +2345,6 @@ bos_print(netdissect_options *ndo,
         * gleaned from bozo/bosint.xg
         */
 
-       ND_TCHECK_4(bp + sizeof(struct rx_header));
        bos_op = GET_BE_U_4(bp + sizeof(struct rx_header));
 
        ND_PRINT(" bos call %s", tok2str(bos_req, "op#%u", bos_op));
@@ -2494,11 +2455,6 @@ bos_reply_print(netdissect_options *ndo,
                ND_PRINT(" errcode");
                INTOUT();
        }
-
-       return;
-
-trunc:
-       ND_PRINT(" [|bos]");
 }
 
 /*
@@ -2547,7 +2503,6 @@ ubik_print(netdissect_options *ndo,
 
        switch (ubik_op) {
                case 10000:             /* Beacon */
-                       ND_TCHECK_4(bp);
                        temp = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        ND_PRINT(" syncsite %s", temp ? "yes" : "no");
@@ -2579,7 +2534,6 @@ ubik_print(netdissect_options *ndo,
                        INTOUT();
                        ND_PRINT(" length");
                        INTOUT();
-                       ND_TCHECK_4(bp);
                        temp = GET_BE_U_4(bp);
                        bp += sizeof(uint32_t);
                        tok2str(ubik_lock_types, "type %u", temp);