+ return (hdrlen);
+}
+
+/*
+ * Print EtherTalk/TokenTalk packets (or FDDITalk, or whatever it's called
+ * when it runs over FDDI; yes, I've seen FDDI captures with AppleTalk
+ * packets in them).
+ */
+void
+atalk_print(netdissect_options *ndo,
+ const u_char *bp, u_int length)
+{
+ const struct atDDP *dp;
+ u_short snet;
+
+ if(!ndo->ndo_eflag)
+ ND_PRINT((ndo, "AT "));
+
+ if (length < ddpSize) {
+ ND_PRINT((ndo, " [|ddp %u]", length));
+ return;
+ }
+ if (!ND_TTEST_LEN(bp, ddpSize)) {
+ ND_PRINT((ndo, " [|ddp]"));
+ return;
+ }
+ dp = (const struct atDDP *)bp;
+ snet = EXTRACT_BE_U_2(dp->srcNet);
+ ND_PRINT((ndo, "%s.%s", ataddr_string(ndo, snet, EXTRACT_U_1(dp->srcNode)),
+ ddpskt_string(ndo, EXTRACT_U_1(dp->srcSkt))));
+ ND_PRINT((ndo, " > %s.%s: ",
+ ataddr_string(ndo, EXTRACT_BE_U_2(dp->dstNet), EXTRACT_U_1(dp->dstNode)),
+ ddpskt_string(ndo, EXTRACT_U_1(dp->dstSkt))));
+ bp += ddpSize;
+ length -= ddpSize;
+ ddp_print(ndo, bp, length, EXTRACT_U_1(dp->type), snet, EXTRACT_U_1(dp->srcNode), EXTRACT_U_1(dp->srcSkt));