Many of the problems encountered when running an x-kernel turn out to be configuration problems. Here are a few common symptoms and some things you might want to check if these symptoms occur (setting the debugging variable traceprotocol to TR_EVENTS or higher can be very helpful in identifying problems):
Your x-kernel may have been configured without a protocol table. Make sure your graph.comp or ROM files mention at least one protocol table and that the specified protocol table exists and is readable.
ARP's initialization routine will not return until it has discovered the binding for its local IP address. If the x-kernel hangs in arp_init, ARP is probably sending out RARP requests which are not being answered. Multiple warning messages of the form:
ARP: Could not get my IP address for interface eth (still trying)
are an indicator of this problem.
If you are running the sunos simulator, you must have an ARP binding in your ROM file for your local host (see section 13.3.) On other platforms, an ARP binding for the local host is not necessary if another host on your network will respond to RARP broadcasts. If you do not have such a host (or if it is not responding for whatever reason), adding a local binding to your ROM file should fix the problem.
Check your ROM file. If it contains an initial binding for the destination host which is incorrect, the destination host will not see packets from the sending host.
An open may fail if ARP can not resolve the IP address of the destination (turning ARP tracing on can help identify this problem.) ARP requests should never be sent on the sunos simulator platform. If you are running on the sunos platform and you see ARP requests being sent, check the ROM file on the sending host and make sure there is an ARP binding for the destination host.
If the x-kernel can't find a protocol number for your protocol in any of its tables, it will abort before calling the protocol's initialization routine. You will need to add an entry for your protocol in one of the tables (see section 13.1.)
Make sure that the source and destination hosts are running with identical protocol table entries for the protocol in question. If the numbers are different, messages won't get to the appropriate protocol on the destination host.