#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.36 2003-11-16 09:36:25 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.42 2005-05-06 08:26:44 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
{
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:",
+ (void)printf("%s.%04x: ",
ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode),
EXTRACT_16BITS(&ipx->dstSkt));
dstSkt = EXTRACT_16BITS(&ipx->dstSkt);
switch (dstSkt) {
case IPX_SKT_NCP:
- (void)printf(" ipx-ncp %d", length);
+ (void)printf("ipx-ncp %d", length);
break;
case IPX_SKT_SAP:
ipx_sap_print((u_short *)datap, length);
ipx_rip_print((u_short *)datap, length);
break;
case IPX_SKT_NETBIOS:
- (void)printf(" ipx-netbios %d", length);
+ (void)printf("ipx-netbios %d", length);
#ifdef TCPDUMP_DO_SMB
ipx_netbios_print(datap, length);
#endif
break;
case IPX_SKT_DIAGNOSTICS:
- (void)printf(" ipx-diags %d", length);
+ (void)printf("ipx-diags %d", length);
break;
case IPX_SKT_NWLINK_DGM:
- (void)printf(" ipx-nwlink-dgm %d", length);
+ (void)printf("ipx-nwlink-dgm %d", length);
#ifdef TCPDUMP_DO_SMB
ipx_netbios_print(datap, length);
#endif
break;
case IPX_SKT_EIGRP:
- (void)printf(" ipx-eigrp %d", length);
+ eigrp_print(datap, length);
break;
default:
- (void)printf(" ipx-#%x %d", dstSkt, length);
+ (void)printf("ipx-#%x %d", dstSkt, length);
break;
}
}
(void)printf("ipx-sap-nearest-resp");
for (i = 0; i < 8 && length > 0; i++) {
- TCHECK2(ipx[25], 10);
+ TCHECK(ipx[0]);
(void)printf(" %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0]))));
- fn_print((u_char *)&ipx[1], (u_char *)&ipx[1] + 48);
+ 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;