/* * Print IPX datagram packets. */ void ipx_print(packetbody_t p, u_int length) { __capability const struct ipxHdr *ipx = (__capability const struct ipxHdr *)p; if (!eflag) printf("IPX "); PACKET_HAS_ELEMENT_OR_TRUNC(ipx, srcSkt); (void)printf("%s.%04x > ", ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode), EXTRACT_16BITS(&ipx->srcSkt)); (void)printf("%s.%04x: ", ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode), EXTRACT_16BITS(&ipx->dstSkt)); /* take length from ipx header */ PACKET_HAS_ELEMENT_OR_TRUNC(ipx, length); length = EXTRACT_16BITS(&ipx->length); ipx_decode(ipx, (packetbody_t)ipx + ipxSize, length - ipxSize); return; trunc: printf("[|ipx %d]", length); }
/* * Print IPX datagram packets. */ void ipx_print(const u_char *p, u_int length) { const struct ipxHdr *ipx = (const struct ipxHdr *)p; if (!eflag) printf("IPX "); TCHECK(ipx->srcSkt); (void)printf("%s.%04x > ", ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode), EXTRACT_16BITS(&ipx->srcSkt)); (void)printf("%s.%04x: ", ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode), EXTRACT_16BITS(&ipx->dstSkt)); /* take length from ipx header */ TCHECK(ipx->length); length = EXTRACT_16BITS(&ipx->length); ipx_decode(ipx, (u_char *)ipx + ipxSize, length - ipxSize); return; trunc: printf("[|ipx %d]", length); }
/* * Print IPX datagram packets. */ void ipx_print(netdissect_options *ndo, const u_char *p, u_int length) { const struct ipxHdr *ipx = (const struct ipxHdr *)p; if (!ndo->ndo_eflag) ND_PRINT((ndo, "IPX ")); ND_TCHECK(ipx->srcSkt); ND_PRINT((ndo, "%s.%04x > ", ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode), EXTRACT_16BITS(&ipx->srcSkt))); ND_PRINT((ndo, "%s.%04x: ", ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode), EXTRACT_16BITS(&ipx->dstSkt))); /* take length from ipx header */ ND_TCHECK(ipx->length); length = EXTRACT_16BITS(&ipx->length); ipx_decode(ndo, ipx, (u_char *)ipx + ipxSize, length - ipxSize); return; trunc: ND_PRINT((ndo, "[|ipx %d]", length)); }
void ipx_sap_print(const u_short *ipx, u_int length) { int command, i; TCHECK(ipx[0]); command = EXTRACT_16BITS(ipx); ipx++; length -= 2; switch (command) { case 1: case 3: if (command == 1) (void)printf("ipx-sap-req"); else (void)printf("ipx-sap-nearest-req"); TCHECK(ipx[0]); (void)printf(" %s", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0])))); break; case 2: case 4: if (command == 2) (void)printf("ipx-sap-resp"); else (void)printf("ipx-sap-nearest-resp"); for (i = 0; i < 8 && length > 0; i++) { TCHECK(ipx[0]); (void)printf(" %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0])))); if (fn_printzp((u_char *)&ipx[1], 48, snapend)) { printf("'"); goto trunc; } TCHECK2(ipx[25], 10); printf("' addr %s", ipxaddr_string(EXTRACT_32BITS(&ipx[25]), (u_char *)&ipx[27])); ipx += 32; length -= 64; } break; default: (void)printf("ipx-sap-?%x", command); break; } return; trunc: printf("[|ipx %d]", length); }
void ipx_sap_print(__capability const u_short *ipx, u_int length) { int command, i; PACKET_HAS_ONE_OR_TRUNC(ipx); command = EXTRACT_16BITS(ipx); ipx++; length -= 2; switch (command) { case 1: case 3: if (command == 1) (void)printf("ipx-sap-req"); else (void)printf("ipx-sap-nearest-req"); PACKET_HAS_ONE_OR_TRUNC(ipx); (void)printf(" %s", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0])))); break; case 2: case 4: if (command == 2) (void)printf("ipx-sap-resp"); else (void)printf("ipx-sap-nearest-resp"); for (i = 0; i < 8 && length > 0; i++) { PACKET_HAS_ONE_OR_TRUNC(ipx); (void)printf(" %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0])))); if (fn_printzp((packetbody_t)&ipx[1], 48, snapend)) { printf("'"); goto trunc; } PACKET_HAS_SPACE_OR_TRUNC(ipx, (2 * 25) + 10); printf("' addr %s", ipxaddr_string(EXTRACT_32BITS(&ipx[25]), (packetbody_t)&ipx[27])); ipx += 32; length -= 64; } break; default: (void)printf("ipx-sap-?%x", command); break; } return; trunc: printf("[|ipx %d]", length); }
static void ipx_sap_print(netdissect_options *ndo, const u_short *ipx, u_int length) { int command, i; ND_TCHECK(ipx[0]); command = EXTRACT_16BITS(ipx); ipx++; length -= 2; switch (command) { case 1: case 3: if (command == 1) ND_PRINT((ndo, "ipx-sap-req")); else ND_PRINT((ndo, "ipx-sap-nearest-req")); ND_TCHECK(ipx[0]); ND_PRINT((ndo, " %s", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0]))))); break; case 2: case 4: if (command == 2) ND_PRINT((ndo, "ipx-sap-resp")); else ND_PRINT((ndo, "ipx-sap-nearest-resp")); for (i = 0; i < 8 && length > 0; i++) { ND_TCHECK(ipx[0]); ND_PRINT((ndo, " %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0]))))); if (fn_printzp(ndo, (u_char *)&ipx[1], 48, ndo->ndo_snapend)) { ND_PRINT((ndo, "'")); goto trunc; } ND_TCHECK2(ipx[25], 10); ND_PRINT((ndo, "' addr %s", ipxaddr_string(EXTRACT_32BITS(&ipx[25]), (u_char *)&ipx[27]))); ipx += 32; length -= 64; } break; default: ND_PRINT((ndo, "ipx-sap-?%x", command)); break; } return; trunc: ND_PRINT((ndo, "[|ipx %d]", length)); }
(void)printf("802.1 CONN "); } if ((u_char *)(nb + 1) > snapend) { printf(" [|netbios]"); return; } /* netbios_decode(nb, (u_char *)nb + p8022Size, length - p8022Size); */ } #ifdef never (void)printf("%s.%d > ", ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode), EXTRACT_16BITS(ipx->srcSkt)); (void)printf("%s.%d:", ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode), EXTRACT_16BITS(ipx->dstSkt)); if ((u_char *)(ipx + 1) > snapend) { printf(" [|ipx]"); return; } /* take length from ipx header */ length = EXTRACT_16BITS(&ipx->length); ipx_decode(ipx, (u_char *)ipx + ipxSize, length - ipxSize);