Mikes' Notebook
Message "Unknown Protocol: icmp" When Trying to Use Ping or Tracerte
I've seen or heard about this problem a few times now, on both eCS and MPC systems - something may be going wrong with the install program on those updates....
As you may know, the "protocol" tcp/ip is actually several protocols rolled together. One of these proocols is known as icmp. There is a file named protocol that tells your tcp/ip configuration what protocol goes with what service (ping is a service, as are http, pop3, and smpt, etc.). If you see the above error, something is probably wrong with your protocol or services file(s). These are both usually located in your \mptn\etc directory. What you can do is backup your existing file(s) and download the ones that I've linked here (you'll need to rename them). Reboot, and you should be ok now. If not, something more fundamental is messed up - seek help in the newsgroups or try a reinstall.
Notes on Multiple Network Cards
This section is about the ibmlan.ini and protocol.ini files in a system with multiple network cards. That's because trying to configure a system with multiple network cards leads to trouble. Around 90% of the time, MPTS messes up the net= lines in the ibmlan.ini file. The other 10%...
There is no cookbook solution to this situation, because there is often more than one legal and correct way of doing things, so how you fix the problem depends on your exact circumstances. What I'm going to show you here are excerpts from sample *.ini files and an approach that will help you work out your answer.
My annotatons are in italics. I've trimmed the parts of ibmlan.ini heavily, leaving only the parts that have to do with the assignments of logical nets to adapters. (These files are from a WSeB system. There are no functional differences that I'm aware of for OS/2, MPC, or eCS).
Let me mention here that IBMLAN.INI is ONLY for NETBIOS and NETBIOS over TCP/IP protocols, while protocol.ini is for everything having to do with a network card.
A word on jargon before we go further: NETBEUI is the official IBM term for what the rest of us call NETBIOS. TCPBEUI is the offical term for TCP/IP over NETBIOS.
IBMLAN.INI
[networks]
net2 = NETBEUI$,0,LM10,102,222,14
net3 = TCPBEUI$,1,LM10,102,222,14
In the line "netx = ", the number x directly after the word "net" seems to be arbitrary. As long as everything is consistant, the exact value of the number is irrelevant. As it happens, this seems to be the "logical adapter number" that you used in MPTS, but I think it's just used as a convenient label.
Moving to the right side of the equals sign, the first number after the protocol name is the number of the logical adapter from protocol.ini. An explanation of the rest of the "net =" line is outside the scope of this document. Check the applicable redbooks BEFORE making changes to anything but this adapter number.
In this example, we're setting up a NETBIOS lan and a NETBIOS over TCP/IP lan, both assigned to the same physical network interface card (NIC). Setting up multiple protocols with multiple physical cards will be about the same, except for the protocol.ini file.
; wrknets = ,net2,net3
wrknets = ,net2
Let me point out a few things here. First, you can have multiple networks defined. Second, the multiple networks don't need to be in numeric order (although these are). Third, if you don't have multiple nets defined, you do need the leading comma (,).
; srvnets = ,net2,net3
srvnets = ,net2
The same three points mentioned for wkrnets apply to srvnets. (See above.)
PROTOCOL.INI
The protocol.ini file is self-referential (parts of it refer to other parts of it). This makes it a real pain to try to follow what's actually what, especially if you try working with sections of the file in isolation. That's why I have included an entire protocol.ini file in this section. I'll point out the parts that matter to you and why. Just remember, your file won't look exactly like this one, so use this as a guide in how to think things through when it comes time to adjust your own file.
In this particular case, we're assigning the same physical adapter to two different logical adapters. The concept of physical adapters being separate from logical adapters is a difficult one, but it is necessary to understand how it works in order to assign multiple protocols to the same (physical) adapter.
[PROT_MAN]
DRIVERNAME = PROTMAN$
[IBMLXCFG]
netbeui_nif = netbeui.nif
tcpbeui_nif = tcpbeui.nif
tcpip_nif = tcpip.nif
EL90XIO2_nif = EL90XIO2.nif
[NETBIOS]
DriverName = netbios$
ADAPTER0 = netbeui$,0
On the left side of the equals sign, we have logical adapter 0. On the right side, it is assigned to run NETBIOS protocol and to physical adapter 0.
ADAPTER1 = tcpbeui$,1
On the left side of the equals sign, we have logical adapter 1. On the right side, it is assigned to run NETBIOS over TCP/IP protocol and to physical adapter 1.
In the preceding two lines of code, the numbers in the assignment of the logical adapters are NOT arbitrary. In fact, the numbers have to do with the way OS/2 assigns multiple protocols to the same physical adapter. If you aren't sure how to handle the number assignment, check the redbooks.
Multiple protocols can be assigned to the same logical adapter, but there are some limitations. Specifically, NETBEUI and TCPBEUI cannot be assigned to the same logical adapter number, even if they are being assigned to the same physical adapter.
(I know I said that we had only one physical adapter - wait for it.)
[netbeui_nif]
DriverName = netbeui$
Bindings = EL90XIO2_nif
Here we assign protocol NETBEUI to the correct NIF file for the Etherlink 905 card.
ETHERAND_TYPE = "I"
USEADDRREV = "YES"
OS2TRACEMASK = 0x0
SESSIONS = 254
NCBS = 254
NAMES = 42
SELECTORS = 50
USEMAXDATAGRAM = "YES"
ADAPTRATE = 1000
WINDOWERRORS = 0
MAXDATARCV = 4352
TI = 30000
T1 = 1000
T2 = 200
MAXIN = 1
MAXOUT = 1
NETBIOSTIMEOUT = 500
NETBIOSRETRIES = 3
NAMECACHE = 1000
RNDOPTION = 1
PIGGYBACKACKS = 1
DATAGRAMPACKETS = 50
PACKETS = 350
LOOPPACKETS = 8
PIPELINE = 5
MAXTRANSMITS = 6
MINTRANSMITS = 2
DLCRETRIES = 10
FCPRIORITY = 5
NETFLAGS = 0x0
[tcpbeui_nif]
DriverName = tcpbeui$
Bindings = ,EL90XIO2_nif
And here we assign protocol TCPBEUI to the same NIF file for the Etherlink 905 card. Let me also point out the comma (,) at the beginning of the bindings. This is also how and where you can bind the same protocol to multiple adapters.
NOTE: This (the comma at the beginning of the bindings) does not work for me. Instead it gives me an error during bootup!! HCM, 04 December 2003.
NODETYPE = "B-Node"
OS2TRACEMASK = 0x0
SESSIONS = 130
NCBS = 225
NAMES = 21
SELECTORS = 15
USEMAXDATAGRAM = "NO"
NETBIOSTIMEOUT = 500
NETBIOSRETRIES = 2
NAMECACHE = 1000
PRELOADCACHE = "NO"
NAMESFILE = 0
DATAGRAMPACKETS = 20
PACKETS = 50
INTERFACERATE = 300
[tcpip_nif]
DriverName = TCPIP$
Bindings = EL90XIO2_nif
And here we assign protocol TCP/IP to the same NIF file for the Etherlink 905 card.
[EL90XIO2_nif]
DriverName = EL90X$
MaxTransmits = 40
And that ends the protocol.ini file.
The real problem in understanding the protocol.ini file is that there is more than one way to do things. For instance, I could as easily have defined one physical adapter and connected all of the protocols to it, instead of defining 'multiple physical adapters', all pointing to the same hardware. It depends on what you're trying to do and how. But this should help you to examine your own protocol.ini file and think through the changes you need to make.
Back to Mike's Notebook
Revised Sat Sep 07 07:22:18 2002
Copyright (C) 2002, MWC Enterprises
All rights reserved.