]> The Tcpdump Group git mirrors - tcpdump/commitdiff
From Heinz-Ado Arnolds <[email protected]>:
authorguy <guy>
Sun, 25 Nov 2001 01:48:46 +0000 (01:48 +0000)
committerguy <guy>
Sun, 25 Nov 2001 01:48:46 +0000 (01:48 +0000)
Print out IPX SAPs symbolically if "-n" not specified.

Show the socket number in IPX packets as 4 hex digits, with
zero-padding.

Show the network number in IPX packets as 8 hex digits, with
zero-padding.

Use "htons()", not "ntohs()", in "init_eprotoarray()", as the argument
is in host byte order (they do the same thing, but using "htons()" makes
it clearer what's being done).

addrtoname.c
interface.h
print-ipx.c

index 8d22ce071942ebdf41f5d6338673fa299df08e77..982a3c3115200eda356eabe252a522583d82e95f 100644 (file)
@@ -23,7 +23,7 @@
  */
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.85 2001-11-15 08:06:37 itojun Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/addrtoname.c,v 1.86 2001-11-25 01:48:46 guy Exp $ (LBL)";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -80,6 +80,7 @@ struct hnamemem uporttable[HASHNAMESIZE];
 struct hnamemem eprototable[HASHNAMESIZE];
 struct hnamemem dnaddrtable[HASHNAMESIZE];
 struct hnamemem llcsaptable[HASHNAMESIZE];
+struct hnamemem ipxsaptable[HASHNAMESIZE];
 
 #ifdef INET6
 struct h6namemem {
@@ -611,6 +612,32 @@ udpport_string(register u_short port)
        return (tp->name);
 }
 
+const char *
+ipxsap_string(u_short port)
+{
+       register char *cp;
+       register struct hnamemem *tp;
+       register u_int32_t i = port;
+       char buf[sizeof("0000")];
+
+       for (tp = &ipxsaptable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
+               if (tp->addr == i)
+                       return (tp->name);
+
+       tp->addr = i;
+       tp->nxt = newhnamemem();
+
+       cp = buf;
+       NTOHS(port);
+       *cp++ = hex[port >> 12 & 0xf];
+       *cp++ = hex[port >> 8 & 0xf];
+       *cp++ = hex[port >> 4 & 0xf];
+       *cp++ = hex[port & 0xf];
+       *cp++ = '\0';
+       tp->name = strdup(buf);
+       return (tp->name);
+}
+
 static void
 init_servarray(void)
 {
@@ -655,12 +682,12 @@ init_eprotoarray(void)
        register struct hnamemem *table;
 
        for (i = 0; eproto_db[i].s; i++) {
-               int j = ntohs(eproto_db[i].p) & (HASHNAMESIZE-1);
+               int j = htons(eproto_db[i].p) & (HASHNAMESIZE-1);
                table = &eprototable[j];
                while (table->name)
                        table = table->nxt;
                table->name = eproto_db[i].s;
-               table->addr = ntohs(eproto_db[i].p);
+               table->addr = htons(eproto_db[i].p);
                table->nxt = newhnamemem();
        }
 }
@@ -806,6 +833,240 @@ init_llcsaparray(void)
        }
 }
 
+static struct tok ipxsap_db[] = {
+       { 0x0000, "Unknown" },
+       { 0x0001, "User" },
+       { 0x0002, "User Group" },
+       { 0x0003, "PrintQueue" },
+       { 0x0004, "FileServer" },
+       { 0x0005, "JobServer" },
+       { 0x0006, "Gateway" },
+       { 0x0007, "PrintServer" },
+       { 0x0008, "ArchiveQueue" },
+       { 0x0009, "ArchiveServer" },
+       { 0x000a, "JobQueue" },
+       { 0x000b, "Administration" },
+       { 0x000F, "Novell TI-RPC" },
+       { 0x0017, "Diagnostics" },
+       { 0x0020, "NetBIOS" },
+       { 0x0021, "NAS SNA Gateway" },
+       { 0x0023, "NACS AsyncGateway" },
+       { 0x0024, "RemoteBridge/RoutingService" },
+       { 0x0026, "BridgeServer" },
+       { 0x0027, "TCP/IP Gateway" },
+       { 0x0028, "Point-to-point X.25 BridgeServer" },
+       { 0x0029, "3270 Gateway" },
+       { 0x002a, "CHI Corp" },
+       { 0x002c, "PC Chalkboard" },
+       { 0x002d, "TimeSynchServer" },
+       { 0x002e, "ARCserve5.0/PalindromeBackup" },
+       { 0x0045, "DI3270 Gateway" },
+       { 0x0047, "AdvertisingPrintServer" },
+       { 0x004a, "NetBlazerModems" },
+       { 0x004b, "BtrieveVAP" },
+       { 0x004c, "NetwareSQL" },
+       { 0x004d, "XtreeNetwork" },
+       { 0x0050, "BtrieveVAP4.11" },
+       { 0x0052, "QuickLink" },
+       { 0x0053, "PrintQueueUser" },
+       { 0x0058, "Multipoint X.25 Router" },
+       { 0x0060, "STLB/NLM" },
+       { 0x0064, "ARCserve" },
+       { 0x0066, "ARCserve3.0" },
+       { 0x0072, "WAN CopyUtility" },
+       { 0x007a, "TES-NetwareVMS" },
+       { 0x0092, "WATCOM Debugger/EmeraldTapeBackupServer" },
+       { 0x0095, "DDA OBGYN" },
+       { 0x0098, "NetwareAccessServer" },
+       { 0x009a, "Netware for VMS II/NamedPipeServer" },
+       { 0x009b, "NetwareAccessServer" },
+       { 0x009e, "PortableNetwareServer/SunLinkNVT" },
+       { 0x00a1, "PowerchuteAPC UPS" },
+       { 0x00aa, "LAWserve" },
+       { 0x00ac, "CompaqIDA StatusMonitor" },
+       { 0x0100, "PIPE STAIL" },
+       { 0x0102, "LAN ProtectBindery" },
+       { 0x0103, "OracleDataBaseServer" },
+       { 0x0107, "Netware386/RSPX RemoteConsole" },
+       { 0x010f, "NovellSNA Gateway" },
+       { 0x0111, "TestServer" },
+       { 0x0112, "HP PrintServer" },
+       { 0x0114, "CSA MUX" },
+       { 0x0115, "CSA LCA" },
+       { 0x0116, "CSA CM" },
+       { 0x0117, "CSA SMA" },
+       { 0x0118, "CSA DBA" },
+       { 0x0119, "CSA NMA" },
+       { 0x011a, "CSA SSA" },
+       { 0x011b, "CSA STATUS" },
+       { 0x011e, "CSA APPC" },
+       { 0x0126, "SNA TEST SSA Profile" },
+       { 0x012a, "CSA TRACE" },
+       { 0x012b, "NetwareSAA" },
+       { 0x012e, "IKARUS VirusScan" },
+       { 0x0130, "CommunicationsExecutive" },
+       { 0x0133, "NNS DomainServer/NetwareNamingServicesDomain" },
+       { 0x0135, "NetwareNamingServicesProfile" },
+       { 0x0137, "Netware386 PrintQueue/NNS PrintQueue" },
+       { 0x0141, "LAN SpoolServer" },
+       { 0x0152, "IRMALAN Gateway" },
+       { 0x0154, "NamedPipeServer" },
+       { 0x0166, "NetWareManagement" },
+       { 0x0168, "Intel PICKIT CommServer/Intel CAS TalkServer" },
+       { 0x0173, "Compaq" },
+       { 0x0174, "Compaq SNMP Agent" },
+       { 0x0175, "Compaq" },
+       { 0x0180, "XTreeServer/XTreeTools" },
+       { 0x018A, "NASI ServicesBroadcastServer" },
+       { 0x01b0, "GARP Gateway" },
+       { 0x01b1, "Binfview" },
+       { 0x01bf, "IntelLanDeskManager" },
+       { 0x01ca, "AXTEC" },
+       { 0x01cb, "ShivaNetModem/E" },
+       { 0x01cc, "ShivaLanRover/E" },
+       { 0x01cd, "ShivaLanRover/T" },
+       { 0x01ce, "ShivaUniversal" },
+       { 0x01d8, "CastelleFAXPressServer" },
+       { 0x01da, "CastelleLANPressPrintServer" },
+       { 0x01dc, "CastelleFAX/Xerox7033 FaxServer/ExcelLanFax" },
+       { 0x01f0, "LEGATO" },
+       { 0x01f5, "LEGATO" },
+       { 0x0233, "NMS Agent/NetwareManagementAgent" },
+       { 0x0237, "NMS IPX Discovery/LANternReadWriteChannel" },
+       { 0x0238, "NMS IP Discovery/LANternTrapAlarmChannel" },
+       { 0x023a, "LANtern" },
+       { 0x023c, "MAVERICK" },
+       { 0x023f, "NovellSMDR" },
+       { 0x024e, "NetwareConnect" },
+       { 0x024f, "NASI ServerBroadcast Cisco" },
+       { 0x026a, "NMS ServiceConsole" },
+       { 0x026b, "TimeSynchronizationServer Netware 4.x" },
+       { 0x0278, "DirectoryServer Netware 4.x" },
+       { 0x027b, "NetwareManagementAgent" },
+       { 0x0280, "Novell File and Printer Sharing Service for PC" },
+       { 0x0304, "NovellSAA Gateway" },
+       { 0x0308, "COM/VERMED" },
+       { 0x030a, "GalacticommWorldgroupServer" },
+       { 0x030c, "IntelNetport2/HP JetDirect/HP Quicksilver" },
+       { 0x0320, "AttachmateGateway" },
+       { 0x0327, "MicrosoftDiagnostiocs" },
+       { 0x0328, "WATCOM SQL Server" },
+       { 0x0335, "MultiTechSystems MultisynchCommServer" },
+       { 0x0343, "Xylogics RemoteAccessServer/LANModem" },
+       { 0x0355, "ArcadaBackupExec" },
+       { 0x0358, "MSLCD1" },
+       { 0x0361, "NETINELO" },
+       { 0x037e, "Powerchute UPS Monitoring" },
+       { 0x037f, "ViruSafeNotify" },
+       { 0x0386, "HP Bridge" },
+       { 0x0387, "HP Hub" },
+       { 0x0394, "NetWare SAA Gateway" },
+       { 0x039b, "LotusNotes" },
+       { 0x03b7, "CertusAntiVirus" },
+       { 0x03c4, "ARCserve4.0" },
+       { 0x03c7, "LANspool3.5" },
+       { 0x03d7, "LexmarkPrinterServer" },
+       { 0x03d8, "LexmarkXLE PrinterServer" },
+       { 0x03dd, "BanyanENS NetwareClient" },
+       { 0x03de, "GuptaSequelBaseServer/NetWareSQL" },
+       { 0x03e1, "UnivelUnixware" },
+       { 0x03e4, "UnivelUnixware" },
+       { 0x03fc, "IntelNetport" },
+       { 0x03fd, "PrintServerQueue" },
+       { 0x040A, "ipnServer" },
+       { 0x040D, "LVERRMAN" },
+       { 0x040E, "LVLIC" },
+       { 0x0414, "NET Silicon (DPI)/Kyocera" },
+       { 0x0429, "SiteLockVirus" },
+       { 0x0432, "UFHELPR???" },
+       { 0x0433, "Synoptics281xAdvancedSNMPAgent" },
+       { 0x0444, "MicrosoftNT SNA Server" },
+       { 0x0448, "Oracle" },
+       { 0x044c, "ARCserve5.01" },
+       { 0x0457, "CanonGP55" },
+       { 0x045a, "QMS Printers" },
+       { 0x045b, "DellSCSI Array" },
+       { 0x0491, "NetBlazerModems" },
+       { 0x04ac, "OnTimeScheduler" },
+       { 0x04b0, "CD-Net" },
+       { 0x0513, "EmulexNQA" },
+       { 0x0520, "SiteLockChecks" },
+       { 0x0529, "SiteLockChecks" },
+       { 0x052d, "CitrixOS2 AppServer" },
+       { 0x0535, "Tektronix" },
+       { 0x0536, "Milan" },
+       { 0x055d, "Attachmate SNA gateway" },
+       { 0x056b, "IBM8235 ModemServer" },
+       { 0x056c, "ShivaLanRover/E PLUS" },
+       { 0x056d, "ShivaLanRover/T PLUS" },
+       { 0x0580, "McAfeeNetShield" },
+       { 0x05B8, "NLM to workstation communication (Revelation Software)" },
+       { 0x05BA, "CompatibleSystemsRouters" },
+       { 0x05BE, "CheyenneHierarchicalStorageManager" },
+       { 0x0606, "JCWatermarkImaging" },
+       { 0x060c, "AXISNetworkPrinter" },
+       { 0x0610, "AdaptecSCSIManagement" },
+       { 0x0621, "IBM AntiVirus" },
+       { 0x0640, "Windows95 RemoteRegistryService" },
+       { 0x064e, "MicrosoftIIS" },
+       { 0x067b, "Microsoft Win95/98 File and Print Sharing for NetWare" },
+       { 0x067c, "Microsoft Win95/98 File and Print Sharing for NetWare" },
+       { 0x076C, "Xerox" },
+       { 0x079b, "ShivaLanRover/E 115" },
+       { 0x079c, "ShivaLanRover/T 115" },
+       { 0x07B4, "CubixWorldDesk" },
+       { 0x07c2, "Quarterdeck IWare Connect V2.x NLM" },
+       { 0x07c1, "Quarterdeck IWare Connect V3.x NLM" },
+       { 0x0810, "ELAN License Server Demo" },
+       { 0x0824, "ShivaLanRoverAccessSwitch/E" },
+       { 0x086a, "ISSC Collector" },
+       { 0x087f, "ISSC DAS AgentAIX" },
+       { 0x0880, "Intel Netport PRO" },
+       { 0x0881, "Intel Netport PRO" },
+       { 0x0b29, "SiteLock" },
+       { 0x0c29, "SiteLockApplications" },
+       { 0x0c2c, "LicensingServer" },
+       { 0x2101, "PerformanceTechnologyInstantInternet" },
+       { 0x2380, "LAI SiteLock" },
+       { 0x238c, "MeetingMaker" },
+       { 0x4808, "SiteLockServer/SiteLockMetering" },
+       { 0x5555, "SiteLockUser" },
+       { 0x6312, "Tapeware" },
+       { 0x6f00, "RabbitGateway" },
+       { 0x7703, "MODEM" },
+       { 0x8002, "NetPortPrinters" },
+       { 0x8008, "WordPerfectNetworkVersion" },
+       { 0x85BE, "Cisco EIGRP" },
+       { 0x8888, "WordPerfectNetworkVersion/QuickNetworkManagement" },
+       { 0x9000, "McAfeeNetShield" },
+       { 0x9604, "CSA-NT_MON" },
+       { 0xb6a8, "OceanIsleReachoutRemoteControl" },
+       { 0xf11f, "SiteLockMetering" },
+       { 0xf1ff, "SiteLock" },
+       { 0xf503, "Microsoft SQL Server" },
+       { 0xF905, "IBM TimeAndPlace" },
+       { 0xfbfb, "TopCallIII FaxServer" },
+       { 0xffff, "AnyService/Wildcard" },
+       { 0, (char *)0 }
+};
+
+static void
+init_ipxsaparray(void)
+{
+       register int i;
+       register struct hnamemem *table;
+
+       for (i = 0; ipxsap_db[i].s != NULL; i++) {
+               int j = htons(ipxsap_db[i].v) & (HASHNAMESIZE-1);
+               table = &ipxsaptable[j];
+               while (table->name)
+                       table = table->nxt;
+               table->name = ipxsap_db[i].s;
+               table->addr = htons(ipxsap_db[i].v);
+               table->nxt = newhnamemem();
+       }
+}
+
 /*
  * Initialize the address to name translation machinery.  We map all
  * non-local IP addresses to numeric addresses if fflag is true (i.e.,
@@ -831,6 +1092,7 @@ init_addrtoname(u_int32_t localnet, u_int32_t mask)
        init_eprotoarray();
        init_llcsaparray();
        init_protoidarray();
+       init_ipxsaparray();
 }
 
 const char *
index c57996e902919287953b90b2ba9f029a035ff89a..27489e0d12ad63b538502aae464268c36c351c9b 100644 (file)
@@ -18,7 +18,7 @@
  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.175 2001-11-16 08:59:21 itojun Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.176 2001-11-25 01:48:47 guy Exp $ (LBL)
  */
 
 #ifndef tcpdump_interface_h
@@ -173,6 +173,7 @@ extern void safeputs(const char *);
 extern const char *isonsap_string(const u_char *);
 extern const char *llcsap_string(u_char);
 extern const char *protoid_string(const u_char *);
+extern const char *ipxsap_string(u_short);
 extern const char *dnname_string(u_short);
 extern const char *dnnum_string(u_short);
 
index 2b3575912c0c9b8d039113d78f2a6b8544602011..a29599a9be3d962f32e4ce22a7a36bc4379c726a 100644 (file)
@@ -24,7 +24,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-    "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.32 2001-10-08 21:25:20 fenner Exp $";
+    "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.33 2001-11-25 01:48:48 guy Exp $";
 #endif
 
 #ifdef HAVE_CONFIG_H
@@ -61,11 +61,11 @@ ipx_print(const u_char *p, u_int length)
        const struct ipxHdr *ipx = (const struct ipxHdr *)p;
 
        TCHECK(ipx->srcSkt);
-       (void)printf("%s.%x > ",
+       (void)printf("%s.%04x > ",
                     ipxaddr_string(EXTRACT_32BITS(ipx->srcNet), ipx->srcNode),
                     EXTRACT_16BITS(&ipx->srcSkt));
 
-       (void)printf("%s.%x:",
+       (void)printf("%s.%04x:",
                     ipxaddr_string(EXTRACT_32BITS(ipx->dstNet), ipx->dstNode),
                     EXTRACT_16BITS(&ipx->dstSkt));
 
@@ -84,7 +84,7 @@ ipxaddr_string(u_int32_t net, const u_char *node)
 {
     static char line[256];
 
-    snprintf(line, sizeof(line), "%x.%02x:%02x:%02x:%02x:%02x:%02x",
+    snprintf(line, sizeof(line), "%08x.%02x:%02x:%02x:%02x:%02x:%02x",
            net, node[0], node[1], node[2], node[3], node[4], node[5]);
 
     return line;
@@ -149,7 +149,7 @@ ipx_sap_print(const u_short *ipx, u_int length)
            (void)printf("ipx-sap-nearest-req");
 
        TCHECK(ipx[0]);
-       (void)printf(" %x", EXTRACT_16BITS(&ipx[0]));
+       (void)printf(" %s", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0]))));
        break;
 
       case 2:
@@ -161,7 +161,7 @@ ipx_sap_print(const u_short *ipx, u_int length)
 
        for (i = 0; i < 8 && length > 0; i++) {
            TCHECK2(ipx[25], 10);
-           (void)printf(" %x '", EXTRACT_16BITS(&ipx[0]));
+           (void)printf(" %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0]))));
            fn_print((u_char *)&ipx[1], (u_char *)&ipx[1] + 48);
            printf("' addr %s",
                ipxaddr_string(EXTRACT_32BITS(&ipx[25]), (u_char *)&ipx[27]));
@@ -216,4 +216,3 @@ ipx_rip_print(const u_short *ipx, u_int length)
 trunc:
     printf("[|ipx %d]", length);
 }
-