Many of the problems encountered when running an x-kernel turn out to be configuration problems. Setting the debugging variable
traceprotocol to TR_EVENTS or higher can be very helpful in identifying problems. A few common symptoms and some things you might want to check if these symptoms occur are:
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:
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.1). 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 cannot 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 cannot find a protocol number for your protocol in any of its tables, it will abort before calling that protocol's initialization routine. You will need to add an entry for your protocol in one of the tables (see Section 12.3).
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.