]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-tcp.c
Added RADIUS attributes from RFC 5447
[tcpdump] / print-tcp.c
index f356a4471240be34af33080d05c5c18854792eaf..f69c56de83a160e0ea11381205b7d178811ad009 100644 (file)
@@ -183,14 +183,15 @@ tcp_print(netdissect_options *ndo,
         ch = '\0';
         if (!ND_TTEST_2(tp->th_dport)) {
                if (ip6) {
-                        ND_PRINT("%s > %s: ",
+                        ND_PRINT("%s > %s:",
                                      ip6addr_string(ndo, ip6->ip6_src),
                                      ip6addr_string(ndo, ip6->ip6_dst));
                } else {
-                       ND_PRINT("%s > %s: [|tcp]",
+                       ND_PRINT("%s > %s:",
                                     ipaddr_string(ndo, ip->ip_src),
                                     ipaddr_string(ndo, ip->ip_dst));
                 }
+                nd_print_trunc(ndo);
                 return;
         }
 
@@ -274,11 +275,11 @@ tcp_print(netdissect_options *ndo,
                         if (rev) {
                                 UNALIGNED_MEMCPY(&tha.src, dst, sizeof(ip6->ip6_dst));
                                 UNALIGNED_MEMCPY(&tha.dst, src, sizeof(ip6->ip6_src));
-                                tha.port = dport << 16 | sport;
+                                tha.port = ((u_int)dport) << 16 | sport;
                         } else {
                                 UNALIGNED_MEMCPY(&tha.dst, dst, sizeof(ip6->ip6_dst));
                                 UNALIGNED_MEMCPY(&tha.src, src, sizeof(ip6->ip6_src));
-                                tha.port = sport << 16 | dport;
+                                tha.port = ((u_int)sport) << 16 | dport;
                         }
 
                         for (th = &tcp_seq_hash[tha.port % TSEQ_HASHSIZE];
@@ -330,13 +331,13 @@ tcp_print(netdissect_options *ndo,
                                                  sizeof(ip->ip_dst));
                                 UNALIGNED_MEMCPY(&tha.dst, ip->ip_src,
                                                  sizeof(ip->ip_src));
-                                tha.port = dport << 16 | sport;
+                                tha.port = ((u_int)dport) << 16 | sport;
                         } else {
                                 UNALIGNED_MEMCPY(&tha.dst, ip->ip_dst,
                                                  sizeof(ip->ip_dst));
                                 UNALIGNED_MEMCPY(&tha.src, ip->ip_src,
                                                  sizeof(ip->ip_src));
-                                tha.port = sport << 16 | dport;
+                                tha.port = ((u_int)sport) << 16 | dport;
                         }
 
                         for (th = &tcp_seq_hash[tha.port % TSEQ_HASHSIZE];
@@ -736,6 +737,12 @@ tcp_print(netdissect_options *ndo,
                 rtsp_print(ndo, bp, length);
         } else if (length > 2 &&
                  (IS_SRC_OR_DST_PORT(NAMESERVER_PORT))) {
+                /* domain_print() assumes it does not have to prepend a space before its
+                 * own output to separate it from the output of the calling function. This
+                 * works well with udp_print(), but requires a small prop here.
+                 */
+                ND_PRINT(" ");
+
                 /*
                  * TCP DNS query has 2byte length at the head.
                  * XXX packet could be unaligned, it can go strange
@@ -786,10 +793,10 @@ tcp_print(netdissect_options *ndo,
  bad:
         ND_PRINT("[bad opt]");
         if (ch != '\0')
-                ND_PRINT(">");
+                ND_PRINT("]");
         return;
  trunc:
-        ND_PRINT("[|tcp]");
+        nd_print_trunc(ndo);
         if (ch != '\0')
                 ND_PRINT(">");
 }