mars+ncpfs-HOWTO: (how to make ncpfs and/or mars_nwe work under linux) (draft 2, circa 30-Nov-1999, current for mars_nwe version 0.99pl17) (draft 3, circa 7-Jun-2000, with an important typo correction, and an update for mars_nwe version is 0.99pl19) (draft 4, circa 10-Dec-2000, with just a couple of link updates) (draft 5, circa 21-Mar-2002, with an inconsequential change) (draft 6, circa 28-May-2004, with notes about Novell's Client 4.90) by David Burton (remove the ".nospam") Burton Systems Software Makers of TLIB Version Control 5.54 for Win-NT/2K/XP/9x/ME/3.1x, DOS & OS/2. (and command-line version also runs under Linux's WINE Windows Emulator) http://www.burtonsys.com/ **** For the latest version of this document, look here: http://www.burtonsys.com/mars_ncpfs-HOWTO.html or http://www.burtonsys.com/mars_ncpfs-HOWTO.txt ============================================================================== Synopsis -------- If you want to run both ncpfs and mars_nwe, then you must: o Use the "#define INTERNAL_RIP_SAP 1" version of mars_nwe (which probably means that you needn't recompile it, if you got an already compiled version, as I did with Redhat 6.0). o Load nwserv first, then 'insmod ncpfs' and ncpmount. o Do not use ipx_interface or ipx_configure. o Configure the Internal Network Number in section/line 3 of /etc/nwserv.conf to be unique. o Configure the External Network Number in section/line 4 of /etc/nwserv.conf to be the external network number of your existing Netware server(s), which is NOT the network number displayed by slist. You can find out the Internal and External Network Numbers of a Novell 3.12 server by doing a 'config' command on the system console, or 'load install' and edit STARTUP.NCF. (Note that the comments in nwserv.conf are wrong!) Note: you can get the latest MARS_NWE from: http://www.compu-art.de/download/mars_nwe.html or perhaps http://www.compu-art.de/service/mars_nwe/mars_nwe.html or ftp://www.compu-art.de/mars_nwe/ The latest version is mars_nwe-0.99.pl20.tgz (09/01/2000), but this document is for the previous version, mars_nwe-0.99.pl19. Also, the SMArT configurator (which I've not used) for MARS_NWE is at: http://www.lintux.cx/smart.html Martin Stover's email address is: mstover@compu-art.de ============================================================================== IPX Internal and External Network Numbers ----------------------------------------- When someone refers to an "IPX network number" for an IPX (Novell-style) network or server, they can be talking about either of two different things: an "Internal Network Number" or an "External Network Number." A single LAN cabling system can have several servers on it, all sharing the same 10baseT hub or coax loop or TokenRing MAU or whatever. Also, if a single server computer has two (or more) Network Interface Cards (NICs, e.g., NE2000), then it can be a server to two (or more) LAN cabling systems. [I suppose that such a server could also work as a router or bridge between the two LAN cabling systems, but I don't know anything about that subject.] Each SERVER on a LAN must have a single, unique "INTERNAL Network Number" assigned to it. Even if there are several NICs in the server, there will still be only one Internal Network Number for that entire server. Each LAN CABLING SYSTEM must have a single, unique "EXTERNAL Network Number" assigned to it. If there are several servers on the LAN cabling system, then all must be configured for the SAME External Network Number. But if there are several NICs in the server, connected to several different LAN cabling systems, then that one server will be using several different External Network Numbers. Thus, if you are configuring a Linux PC, the External Network Number is the network number that is associated with each NIC, and the Internal Network Number is the network number that is associated with the PC as a whole. I think that Internal and External Network Numbers are part of the SAME "name space" ("number space"?). In other words, you should not try to use the same number for both an Internal Network Number (of a server) and an External Network Number (of a LAN cabling system). Network Numbers on a Real Novell NetWare Server ----------------------------------------------- I have a small Novell 3.12 network, with just one 10baseT hub and just one genuine Novell NetWare 3.12 server. On my Novell NetWare 3.12 Server, STARTUP.NCF contains: file server name BURTON ipx internal net 11 register memory... load NE2000... bind IPX to NE2000 net=21 mount all ... In this case, as you can see, my Novell server's Internal Network Number is 11 hexadecimal (a/k/a 0x11), and the LAN cabling system's External Network Number is 21 hexadecimal (a/k/a 0x21). Note: You can view the contents of your STARTUP.NCF file from the server console via "load install". (You can also view various configuration settings, including internal and external network numbers, from the console via the "config" command.) Typing 'slist' from any client workstation shows server=BURTON, network=11, node=1, Status=Default (except that Linux's slist adds superflous leading zeros to the numbers). That means that the Internal Network Number for that server is 11 hexadecimal (0x11). I don't know what a "node" or "node address" is, but it seems to always be 1. Maybe it is for when you have two NICs in the same server, connected to the same LAN cabling system (for redundancy? or performance?). "Status=Default" just means that this server is the designated default server. As an experiment, I typed "unbind ipx ne2000" on the server console, and it responded: {date,time}: 1.1.116 IPX local network 00000021 removed because of unbind request IPX LAN protocol unbound from NE2000 In this case, "IPX local network 00000021" refers to the External Network Number for the cabling system which is attached to that particular NIC. After the unbind command, the server no longer knows what NIC is attached to external network number 0x21. Using ncpfs Without mars_nwe ---------------------------- If you only need to enable your Linux PC to access existing Novell NetWare servers, and you don't need to use your Linux PC as a server or router, then you do not need mars_nwe. You need ncpfs. Under Redhat Linux 6.0, I got ncpfs (the Netware Client File System) to work with my existing NetWare 3.12 server by adding this series of commands to the end of my /etc/rc.d/rc.local file, so that it runs at boot time: insmod ncpfs # ipx_interface add -p eth0 802.3 ipx_interface add -p eth0 802.3 0x21 ncpmount -S BURTON -U LINUX1 -n /burton (Note #1: it was NOT necessary to recompile the Linux kernel, since IPX support is compiled into this version of Linux by default.) (Note #2: different Linux distributions handle startup "autoexec" processing in different ways. I only have Redhat, and with Redhat it worked to add the commands to the end of /etc/rc.d/rc.local, but you may have to do something different if you use a different Linux distribution. See /etc/inittab to see how the process begins.) The "insmod ncpfs" command simply loads the ncpfs module, since it is not linked into the kernel on my Redhat 6.0 Linux system. The "ipx_interface add -p eth0 802.3 0x21" command is similar to Novell's "bind" command on my Novell 3.12 server: it tells the OS what the External Network Number is for this LAN cabling system. (It exposes that information via a small text-format pseudo-file named /proc/net/ipx_interface which other programs can read.) The ipx_interface command also tells Linux what the device name is for my NIC ("eth0" for my NE2000 Ethernet adapter), and what "frame type" to use. The frame type must match what all the other computers on the LAN cabling system are using. As it happens, if there is a working server on the LAN cabling system, then it is not mandatory to specify the external network number in the ipx_interface command, since ncpmount (or ncpfs?) can "listen" to the network to discover what external network number the existing server is using. The "ncpmount -S BURTON -U LINUX1 -n /burton" command tells Linux to log into the server and mount it as a Linux file system. In my case, the server name is BURTON, the Novell login name on that server for my Linux workstation is LINUX1, the "-n" means there is no password needed to log in, and /burton is the "mount point". If you are new to Linux, then please note that the mount point must be an ALREADY EXISTING directory. You can create it with the mkdir (make directory) command, for example "mkdir /burton" or "mkdir /mnt/burton". Note #1: The ipx_configure command is supposed to be a simpler way to do the same thing as ipx_interface, but ipx_configure does not work at all for me. Note #2: If you have a DOS or OS/2 or Windows-9x/NT workstation on your NetWare LAN then you can use Novell's 'slist' command to list servers without mounting (logging into) them. However, contrary to the documentation, Linux's 'slist' command will NOT list your servers until at least one of them has been mounted with the ncpmount command. I don't know why. My first guess was that slist does not know how to listen for the external network number, but even after I began specifying the external network number in my ipx_interface command, Linux's slist was still unable to find the server. Using mars_nwe to Make Your Linux PC Emulate a NetWare Server ------------------------------------------------------------- I also wanted to make my Linux workstation act as a second server on my Novell Netware network. For this, you can use MARtin Stover's NetWare Emulator, mars_nwe. The programs that are part of mars_nwe are nwserv, nwconn, ncpserv, nwclient, nwbind, nwrouted, and dbmtool. The only one that you'll need to run explicitly is nwserv (NetWare SERVer), and the only commands you'll use with it are 'nwserv' to start it, and 'nwserv -k' to stop it. From the mars_nwe documentation you might conclude that there are two ways to use mars_nwe (or mars_nwe and ncpfs together). The two ways correspond to the two choices for "#define INTERNAL_RIP_SAP" in the config.h source file. However, one of the two ways does not seem to work. The doc/INSTALL file says: (2) Decide, if mars_nwe should initialize your IPX-subsystem, make routing and handle sap/rip or if you want to do this with 3rd party products by hand. The way that does NOT work is to use the ipx_interface command to specify your external network number and frame type, as you did when using ncpfs alone, and build a version of mars_nwe with "#define INTERNAL_RIP_SAP 0" in config.h. (I tried a LOT of permutations, over several days, and, believe me, it just does not work in version 0.99pl17. I didn't try it with version 0.99pl19.) This is the "do this with 3rd party products by hand" choice. Don't waste your time. The way that DOES work is to use a version of mars_nwe that has been compiled with "#define INTERNAL_RIP_SAP 1" in config.h, and load nwserv INSTEAD OF using ipx_interface. This is the "mars_nwe should initialize your IPX-subsystem, make routing and handle sap/rip" choice. Note that you will have to start nwserv BEFORE trying to use mount the other NetWare server(s) with ncpfs and ncpmount. For RedHat 6.x users, this is more convenient, anyhow, because the precompiled binaries were built with "#define INTERNAL_RIP_SAP 1", so you need not recompile mars_nwe. However, if you do want to recompile mars_nwe, then be sure to download the latest and greatest version from Mr. Stover's Web site, http://www.compu-art.de/mars_nwe/ (When I wrote this document, I was using mars_nwe-0.99.pl17, i.e., version 0.99.pl17, circa June 3, 1999, which was still the latest version as of August, 1999). The latest version is now (2 years later) 0.99.pl20. Configuring mars_nwe -------------------- To configure mars_nwe, you must edit its configuration file, /etc/nwserv.conf (which is initially a copy of a file called nw.ini). It consists of a lot of one-line "sections." The sections that deal with IPX network numbers are sections 3 and 4. Section 3 specifies the Internal Network Number for your server, and it is required. Section 4 specifies the External Network Number for the cabling system to which your NIC is attached, and this network number must be the SAME as any other server on the cabling system. Section 4 mostly specifies the same information that you would specify with the ipx_interface command if you were using ncpfs without mars_nwe. Note: the mars_nwe documentation indicates that section 4 is only "strongly recommended," not required. Do not believe it. It is required. Also, the documentation for section/line 4 indicates that the network number there should be unique, but that is WRONG. The section 4 network number is actually the External Network Number, and it MUST be the SAME as the External Network Number used by the other servers on this cabling system. Here's what I have configured for sections/lines 3 and 4: 3 0x31 1 # internal network number (1 per SERVER), and node 4 0x21 eth0 802.3 1 # external network number (1 per cabling system) As you can see, I've configured mars_nwe to use internal network number 31 (hexadecimal) for my Linux server, and external network number 21 (hexadecimal) for the cabling system attached to the NIC. The other sections/lines in the configuration file are well- documented, and are unlikely to cause you difficulty, so I'm not going to discuss them here. To start the mars_nwe NetWare Emulator, run nwserv. To stop it, run 'nwserv -k'. Order of Commands ----------------- To use mars_nwe alone, without ncpfs, after you have configured it in /etc/nwserv.conf you need only one command to start it: nwserv In my case, I put this in my /etc/rc.d/rc.local file, so that it starts automatically whenever my Linux system reboots. When using both mars_nwe (the IPX server, nwserv) and ncpfs (the IPX client, ncpmount), you must start mars_nwe first. In my case, I wanted it to start automatically whenever my Linux system reboots, so I added the following lines to my /etc/rc.d/rc.local file: # Start mars_nwe, the netware server emulator: nwserv # Load ncpfs, so that we can also mount the real Novell 3.12 server: insmod ncpfs # # The ipx_interface command is not needed if nwserv is running, because # # its functionality is handled by section 4 of the /etc/nwserv.conf file. # # If you try to run it after already starting nwserv, then ipx_interface # # will fail with the innocuous error message: # # ipx_interface: Primary network already selected. # # But if you want to run ncpfs without nwserv, then you need this: # ipx_interface add -p eth0 802.3 0x21 # Log onto and mount the Novell Netware 3.12 server: ncpmount -S BURTON -U LINUX1 -n /burton # Log onto and mount the mars_nwe emulated server: ncpmount -S MARS -U SUPERVISOR -P apassword /mars # There's no real need to do this, of course, since we can access # the /mars/... stuff via the normal Linux paths. But it is convenient # to be able to see for verification purposes, when administering the # server. ============================================================================== Interpreting Error Messages --------------------------- (seen either at a console or in /var/log/mars_nwe.log): Q: ipx_interface: Primary network already selected. A: This is an error that is displayed if you try to run ipx_interface after already starting nwserv. You don't need to run ipx_interface if you are running nwserv. Section/line 4 of the configuration information in /etc/nwserv.conf enables mars_nwe (nwserv) to replace the functionality of ipx_interface. Q: ncpmount: No server found when trying to find BURTON (where "BURTON" is the name of a file server that is known to be working) A: Something is probably wrong with the ipx_interface command (if you are using ncpfs without nwserv), or in section/line 4 of /etc/nwserv.conf (if you use nwserv instead of ipx_interface). Check that the External Network Number and frame type are the same as for the other computers on your network. If you already have a Novell Netware 3.12 server, type 'config' on the console. The external network number is shown as 0x21 in: LAN protocol: IPX network 00000021 The frame type is shown as 802.3 in: Frame type: ETHERNET_802.3 Q: !! 08.30,03:51:25 NWS 0 0:PANIC !! 08.30,03:51:25 NWS 0 0:!! IPX IN USE ERROR !!: mars_nwe would kill existing IPX programs if starting because it must reinit ipx devices. Please stop other IPX programs e.g. ncpmount, or change mars_nwe's configuration. A: This is the error that you will see when you try to start nwserv after already running ipx_interface and/or ncpmount. You must run nwserv first (instead of ipx_interface). Q: !! 08.29,13:43:30 NWS 0 0:PANIC !! 08.29,13:43:30 NWS 0 0:Get_ini: device net 0xc = internal net A: I think that this is another error that can occur if you try to start nwserv after running ipx_interface or ncpmount. But I'm not sure. Q: NWS 0 0:SERVER name='MARS', INTERNAL NET=0x21, NODE=0x00:40:95:05:e2:e2 A: That is a status message that you may see in /var/log/mars_nwe.log when mars_nwe starts. In my case, I've adjusted some of the settings in /etc/nwserv.conf so that I get more status messages logged, so I'm not sure whether this message is one that everyone will see, or whether it is shown because I have configured: 100 1 # debug IPX KERNEL (0 | 1) normal=0 101 1 # debug NWSERV normal=1 102 1 # debug NCPSERV normal=0 103 1 # debug NWCONN normal=0 104 0 # debug (start) NWCLIENT, should *always* be '0' ! 105 1 # debug NWBIND normal=0 106 1 # debug NWROUTED normal=1 This message tells you your mars_nwe server's name (in this case the name is MARS because I configured "2 MARS" in /etc/nwserv.conf), and also the Internal Network Number for this server. In the example above, it isn't an error message, but it DOES indicate a problem! On my system, the EXTERNAL Network Number is actually 0x21, but in the above status message we can see that mars_nwe thinks that is the server's INTERNAL Network Number! As you can imagine, mars_nwe did not work until I managed to get it to stop using my External network number for an Internal network number. This problem occurred when I tried to set the external network number with ipx_interface, and use a nwserv that was compiled with "#define INTERNAL_RIP_SAP 0" in config.h. For some reason, mars_nwe ignored the section/line 3 setting for the internal network number in /etc/nwserv.conf, and instead tried to use the external network number (perhaps obtained from ipx_interface) as its internal network number. This is presumably some sort of bug. Note: at one point I suspected that mars_nwe had saved the previously configured network number, perhaps in the bindery files, and was ignoring changes in /etc/nwserv.conf. I don't know whether that was true or not, but it doesn't seem to hurt anything to just delete all the bindery files. The bindery files are normally in either /var/nwserv/db/* or /var/mars_nwe/bindery/* depending upon the "#define PATHNAME_BINDERY" setting in config.h and/or the path specified in section/line 45 of /etc/nwserv.conf (if there is a section/line 45 configured). Q: !! 08.30,14:04:59 NCP 0 0:PANIC !! 08.30,14:04:59 NCP 0 0:Usage::Success ncpserv: nwname address nwbindsock echosocket 08.30,14:16:40 NWS 0 0:t_error:Cannot assign requested address t_rcvudata !OK 08.30,14:16:40 NWS 0 0:t_error:Cannot assign requested address t_rcvudata !OK (and many megabytes of identical t_error messages) A: I don't know what this means, but my guess is that it is related to the above problem in which mars_nwe was trying to use the external network number as an internal network number. Does anyone know what these error messages mean? And which section/line in /etc/nwserv.conf enables/disables them? Q: slist: No server found in ncp_open A: This CAN mean that there is no working server on the network. However, for some unknown reason, Linux's slist also gives this error message until a server is mounted with ncpmount. If you have a DOS, OS/2, or Windows machine on the network, and real Novell client software, then you can run 'slist' from one of those other computers to see the list of servers. Q: 09.02,18:04:04 NWS 0 0:Starting Version: 0.99pl17 09.02,18:04:05 NWS 0 0:TLI-BIND:Cannot assign requested address socket Nr:0x0 09.02,18:04:05 NWS 0 0:t_error:Cannot assign requested address tbind:get_ipx_addr !! 09.02,18:04:05 NWS 0 0:PANIC !! 09.02,18:04:05 NWS 0 0:No ipx-router running !:Cannot assign requested address A: This is what happens if you try to run a version of nwserv which was compiled with "#define INTERNAL_RIP_SAP 0" in config.h. You can make the error message go away by running ipx_interface, but it still won't run correctly. The right solution is to use a version of nwserv built with "#define INTERNAL_RIP_SAP 1" in config.h. Q: What does it mean when you see error messages on a Novell server console every couple of seconds, saying: {date,time}: 1.1.112 Router configuration error detected Router at node 00409505E2E2 claims network 00000021 should be 00000041 A: That means that you have erroneously configured your External Network Number to 0x41 when it should have been 0x21 (to match the existing Novell server). Fix it in section/line 4 of /etc/nwserv.conf (and/or in your ipx_interface command line, if you don't always use mars_nwe). By the way, to stop the errors on your Novell NetWare Server console, stop mars_nwe with the 'nwserv -k' command. Q: I started nwserv, and from my OS/2 workstation I can see the server when I run Novell's slist command, but when I try to map a drive I get a "cannot be located" error. This is the command that I'm using: MAP V:=\\MYSERVR\SYS\ and then I enter the user name when prompted. The MAP program replies with: Your station is attached to server MYSERVR. MAP-4.07-195: Directory [MYSERVR\SYS\] cannot be located. A: Enable more debug logging options in /etc/nwserv.conf, like this 102 1 # debug NCPSERV 103 1 # debug NWCONN <-- especially this one! 105 1 # debug NWBIND Then shutdown mars_nwe: nwserv -k Then restart it: nwserv In my case, when I checked the log file for errors (/var/log/nw.log unless you changed the default in section 201 of /etc/nwserv.conf) the log file showed: 09.03,01:07:05 NWC 1 19:Cannot map inode=1170868, dev=777, namespace=4 to vol=0 handle This turned out to be due to my use of the "o" option in section 1 of /etc/nwserv.conf. With mars_nwe version 0.99pl17, for reasons I cannot recall, I'd configured: 1 SYS /home/nwe/SYS kioO 777 666 but mars_nwe version 0.99pl19 didn't work until I changed that line to: 1 SYS /home/nwe/SYS kiO 777 666 Q: In my /var/log/nw.log file I got this error message: 09.03,01:03:00 NWS 0 0:Cannot get unix uid/gid: User='SUPERVISOR' So I did "adduser -m SUPERVISOR" but that didn't fix it. Why not? A: Because it needs to be lower-case. For some unknown reason, nwserv changes the name to upper-case when logging it, even if the name must actually be all lower-case, as are all the examples in the default /etc/nwserv.conf (a/k/a nw.ini). (I think this is a minor bug.) All the user accounts mentioned in sections 12 and 13 of /etc/nwserv.conf must be created in this way, to avoid this error. Q: 09.03,01:04:00 NWS 0 0:Starting Version: 0.99pl17 09.03,01:04:05 NWS 0 0:DEVICE=eth0, FRAME=802.3, NETWORK=0x21 09.03,01:04:05 NWS 0 0:SERVER name='MARS', INTERNAL NET=0x31, NODE=0x00:00:00:00:00:01 09.03,01:04:05 NWS 0 0:USE_PERMANENT_OUT_SOCKET enabled 09.03,01:04:05 NWS 0 0:IPX_MAX_DATA=1470, RW_BUFFERSIZE =1444 09.03,01:04:05 NWB 0 0:Starting Version: 0.99pl17 09.03,01:04:06 NWB 0 0:check_compress_bindery starts... 09.03,01:04:06 NWB 0 0:check_compress_bindery after qsort 09.03,01:04:06 NWB 0 0:check_compress_bindery after deleting props, propok=1 09.03,01:04:06 NWB 0 0:check_compress_bindery ends after 1 seconds. 09.03,01:04:06 NWB 0 0:Add/Change User='SUPERVISOR', UnixUser='apassword' 09.03,01:04:07 NCP 0 0:Starting Version: 0.99pl17 09.03,01:04:07 NCP 0 0:USE_PERMANENT_OUT_SOCKET enabled 09.03,01:04:07 NWB 0 0:USE_PERMANENT_OUT_SOCKET enabled A: That is all good stuff! You can see from the 2nd line that the frame type is 802.3, and that External Network Number 0x21 is the cabling system attached to the eth0 Ethernet card. You can see from the 3rd line that the mars_nwe server name is MARS, and the server's internal network number is 0x31. ============================================================================== Status Info That You Can View ----------------------------- There is a lot of information about your system available in the /proc/net/ipx* pseudo-files, while either nwserv or ipx_interface is running. Here are some examples, and how to read them. This is with one real Novell 3.12 server at Internal Network Number 0x11, and with the cabling system's External Network Number being 0x21. In /etc/nwserv.conf I have configured: 3 0x31 1 4 0x21 eth0 802.3 1 ...which means that my Linux system has Internal Network Number 0x31. Also, I've used ncpmount to log onto and mount both the real Novell Server and the Linux machine's own mars_nwe server. /proc/net/ipx contains: Local_Address Remote_Address Tx_Queue Rx_Queue State Uid 00000031:4000 Not_Connected 00000000 00000000 07 000 00000031:0452 Not_Connected 00000000 00000000 07 000 00000031:0453 Not_Connected 00000000 00000000 07 000 00000031:0001 Not_Connected 00000000 00000000 07 000 00000031:0456 Not_Connected 00000000 00000000 07 000 00000031:4001 Not_Connected 00000000 00000000 07 000 00000031:4002 Not_Connected 00000000 00000000 07 000 00000031:0451 Not_Connected 00000000 00000000 07 000 00000031:4003 Not_Connected 00000000 00000000 07 000 00000031:4004 Not_Connected 00000000 00000000 07 000 00000031:4008 Not_Connected 00000000 00000000 07 000 00000031:400C 00000011:000000000001:0451 00000000 00000000 01 000 00000031:400D Not_Connected 00000000 00000000 07 000 00000031:400E Not_Connected 00000000 00000000 07 000 00000031:4012 00000031:000000000001:0451 00000000 00000000 01 000 00000031:4013 Not_Connected 00000000 00000000 07 000 00000031:4014 Not_Connected 00000000 00000000 07 000 00000031:4015 Not_Connected 00000000 00000000 07 000 Note that the Local Address column all starts with 00000031 because the Internal Network Number of the Linux box is 0x31. The two mounted server volumes are on Internal Network number 0x11 (for the real Novell server) and Internal Network number 0x31 (for the Linux box's own mars_nwe server). /proc/net/ipx_interface contains: Network Node_Address Primary Device Frame_Type 00000031 000000000001 Yes Internal None 00000021 00409505E2E2 No eth0 802.3 Note that the "Network" number for device "Internal" is the Linux box's Internal Network Number, 0x31; and the "Network" number for the eth0 Ethernet card is the cabling system's External Network Number, 0x21. /proc/net/ipx_route contains: Network Router_Net Router_Node 00000011 00000021 00409505E2A7 00000021 Directly Connected 00000031 Directly Connected Note that the way we can reach the 0x11 Network Number (i.e., the Novell Server) is via Network Number 0x21, which is the External Network Number for the cabling system. The process list is also somewhat interesting. The relevant part of 'ps ax' on my system shows: 1933 ? S 0:00 nwserv 1936 ? S 0:01 nwbind MARS 0.0.0.31:0.0.0.0.0.1:4.51 4002 1937 ? S 0:00 ncpserv MARS 0.0.0.31:0.0.0.0.0.1:4.51 4002 4000 1961 ? S 0:00 nwconn 1 0.0.0.21:0.80.ad.b3.c6.e2:40.f AVA 1983 ? S 0:00 ncpd 2001 ? S 0:00 ncpd 2002 ? S 0:00 nwconn 3 0.0.0.31:0.0.0.0.0.1:40.12 SUPERVISOR (Note: the first nwconn instance is for a Win95 box elsewhere on the LAN that I logged into the MARS server using the login name AVA.) Note that if you do not use mars_nwe, but just ipx_interface and ncpfs and ncpmount, then your Linux box won't have an Internal Network Number at all. So, the /proc/net/ipx_interface pseudo- file will have no "Internal" line: Network Node_Address Primary Device Frame_Type 00000021 00409505E2E2 Yes eth0 802.3 Also, the /proc/net/ipx pseudo-file will contain only references to the External Network Number: Local_Address Remote_Address Tx_Queue Rx_Queue State Uid 00000021:4002 00000011:000000000001:0451 00000000 00000000 01 000 00000021:4003 Not_Connected 00000000 00000000 07 000 00000021:4004 Not_Connected 00000000 00000000 07 000 And, of course, /proc/net/ipx_route will not mention an Internal Network Number: Network Router_Net Router_Node 00000011 00000021 00409505E2A7 00000021 Directly Connected If you then try to run nwserv (the version compiled with "#define INTERNAL_SAP_RIP 0"), it'll be confused and try to use the 0x21 External Network Number as its Internal Network Number: 09.03,05:47:49 NWS 0 0:SERVER name='MARS', INTERNAL NET=0x21, NODE=0x00:40:95:05:e2:e2 You'll see no errors, but it won't work. ============================================================================== Next, a few questions. Some with answers, some without. ------------------------------------------------------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - doc/README says: nwserv . . . Sends broadcasts, wdogs, sap and rip packets. I have no idea what that means. What are those things? Especially, what are SAP and RIP? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - I have no idea how any of this works with NetWare 4 or 5. I only have NetWare 3.12. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - How can I tell whether my kernel has "CONFIG_IPX_INTERN=NO" ? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - doc/README says: If nwserv is started with the parameter 'y', then the simple test client 'nwclient', only for debugging, is started. Parameter '-k' is for stopping the actual running nwserv and parameter '-h' for sending a HUP signal to the running nwserv. But "nwserv y" doesn't work at all. It just gives the usage message. What is the right syntax? And what is the test client, anyhow, and why would I want to run it? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Q: slist shows my existing Novell 3.12 server as being on network number 00000011, but is that decimal or hexadecimal? A: It is hexadecimal, and that is the Internal Network Number for the server, not the External Network Number for the cabling system. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Q: doc/INSTALL says: (8) Stop programs (server down) If nwserv isn't daemonized, then the server can be stopped with ^C, otherwise the server must be shut down with a kill of nwserv or with starting 'nwserv -k' or with the right dos client programm (fconsole server down) as supervisor. But there doesn't seem to be any way to start nwserv not daemonized. A: See section/line 200 in /etc/nwserv.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Q: nwserv seems to load okay, and there are no error messages, but the workstations still can't see the server. What is wrong? A: Make sure that you did not run ipx_interface or ipx_configure or ncpmount before starting nwserv. nwserv must run first. Q: I did that, but slist still doesn't list my server. A: Run a DOS or OS/2 or Windows version of slist, from another workstation on the network. Linux's slist won't show the servers until you have already mounted (logged onto) them. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Q: Shared access to read-only files via "FLAG x:\subdir\file.ext +S" or "FLAG x:\subdir\file.ext +Sh" doesn't seem to work. I still get file sharing errors when old DOS programs try to open such files in "compatibility mode." Why? A: I don't know, I think it is a bug. Maybe it is fixed in mars_nwe-0.99.pl20? (I'm using mars_nwe-0.99.pl19.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Q: When some programs overwrite an existing file with a new, shorter version, the file does not get truncated down to the new/shorter file length. Why not? A: I don't know, I am pretty sure this is a bug. Maybe it is fixed in mars_nwe-0.99.pl20? (I'm using mars_nwe-0.99.pl19.) ============================================================================== Here's my /etc/nwserv.conf with the comment lines removed: 1 SYS /home/nwe/SYS kiO 777 666 1 CDROM /mnt/cdrom kmnor 2 MARS 3 0x31 1 # internal network number 4 0x21 eth0 802.3 1 5 0x0 6 1 0x1 7 1 8 0x61 9 0751 0640 10 99 11 99 12 SUPERVISOR supervisor apassword 13 AVA avaspassword 15 0 generalpassword 16 2 17 0x0 18 0x1 21 LP SYS:/PRINT/LP lp # note: I've not tried the print server 40 /var/spool/nwserv/.volcache 41 /var/spool/nwserv/.locks 42 /var/spool/nwserv 45 /var/nwserv/db 46 /var/nwserv/attrib 47 /var/nwserv/trustees 100 1 # debug IPX KERNEL (0 | 1) normal=0 101 1 # debug NWSERV normal=1 102 1 # debug NCPSERV normal=0 103 1 # debug NWCONN normal=0 104 0 # debug (start) NWCLIENT, should *always* be '0' ! 105 1 # debug NWBIND normal=0 106 1 # debug NWROUTED normal=1 200 1 # 0 = no logfile and dont daemonize nwserv/nwrouted 201 /var/log/mars_nwe.log # filename of logfile 202 0x0 # flag in hex notation 210 03 # 1 .. 600 (default 10) seconds after server 211 60 # 10 .. 600 (default 60) broadcasts every x seconds 300 1 # > 0 print routing info to file every x broadcasts. 301 /var/log/nw.routes # filename of logfile 302 0x1 # flags will be interpreted as hex value. 310 7 # send wdog's only to device net < x ticks. 400 /etc/nwserv.stations # for syntax see file in the examples directory. 401 0 # 0 = ignore entry 400, get nearest response always enabled. 402 0 # 0 = ignore entry 400, create connection always enabled. ============================================================================== This is also possibly of interest: --------- Begin forwarded message ---------- From: dburton@BurtonSys.com.nospam (David Burton -- remove the ".nospam") Message-ID: Date: Mon, 06 Sep 1999 13:47:58 EDT Subject: What's wrong with 802.3 X-Mailer: SilverMail version B.145 Linux apparently supports four choices of "frame type" for networking. The four are Ethernet-II, 802.2, 802.3, and SNAP. Somewhere in the Linux IPX and mars_nwe documention (in the mars_nwe FAQ, at least, and perhaps in other places, too) I had read a preference expressed for Ethernet-II as the "best" frame type to use, with 802.2 being the second choice. As for SNAP, it sounds like nobody uses it except on AppleTalk networks, and maybe the Linux guys weren't REALLY even sure that it worked at all. And the LAST choice was 802.3, which they grudginly admitted should work, but if you have a choice you were advised to use something else. Their favorite was Ethernet-II. Second choice was 802.2. But there was no indication of WHY they so dislike 802.3. Well, my Novell network has always used 802.3, probably just because that's what Greg Sluder set it up with, eons ago. I think it was an arbitrary choice. If he asked me, I'd probably have said to go with the default, or go with the "higher" number (assuming, wrongly, that a higher number meant a more modern protocol). The Novell documentation seems neutral between choosing 802.2 and 802.3. Some versions of Novell apparently default to 802.3, others to 802.2. I think that recent versions are defaulting to 802.2, but I've seen nothing from Novell that indicated that one is better than the other. So, I naturally wondered why the Linux people so dislike 802.3, since it obviously *does* work. Well, today I think that I found out. It wasn't where I expected. I was messing around with the Novell network client settings on Ava's machine, having a bit of trouble at first keeping it from logging off one server when logging onto the other. Well, I fumbled around until I got that to work (why are UIs always so hideous?). While I was in there, I wandered through the menus, looking at other settings. I found "Client32 preferences" -> "Advanced settings" and one setting was for checksums. Checksums? You mean they let you disable checksums?!? How awful! My NT version of Novell's Client does NOT have a "checksums" setting. No wonder I've had customers tell me that files sometimes just get corrupted on their servers, a few bits clobbered here and there! Without checksums, a network cabling problem could EASILY cause data loss. So, I figured that I'd better make sure that I had checksums enabled, for safety. I went to the checksums setting, and discovered that it could be set to a number from 0-3. Again I was surprised. What could four choices be for? What could it be other than "enabled" and "disabled?" Well, that was just odd enough to entice me into looking for a help screen for it. I clicked on the "?" and then on the word "checksums." Wonder of wonders, it came up with help on checksums (usually I just get something generic and useless). The help explained that 0 (my current setting, gak!) meant no checksums, 3 meant checksums required, 2 meant checksums preferred, 1 meant prefer no checksums, but allow them. Then it noted that choosing 2 or 3 carries a performance cost. Then, at the very bottom of the help screen, I read this: Note: Ethernet frame type 802.3 does not support checksums. Arrrrgh! You've GOT to be kidding! *NOW* I know what is wrong with frame type 802.3! -Dave Burton Burton Systems Software: http://www.burtonsys.com/ Tel: +1 919-481-0149 or 481-6658 Fax: 481-3787 --------- End forwarded message ---------- --------- Begin forwarded message ---------- Path: prv-forum2.provo.novell.com!prv-forum1.provo.novell.com!prv-forum2.provo.novell.com.POSTED!53ab2750!not-for-mail From: "Dave Burton" Newsgroups: novell.support.netware.client.winnt-2x-xp References: Subject: Novell NetWare Client 4.90 Sp1a doesn't work with Mars-NWE server (but 4.90 does) Message-ID: <72Dtc.506$uj7.125@prv-forum2.provo.novell.com> Date: Fri, 28 May 2004 08:49:07 GMT Organization: Novell Inc. Xref: prv-forum1.provo.novell.com novell.support.netware.client.winnt-2x-xp:10070 I just blew a couple of hours discovering that, although Client version 4.90 works okay with Linux Mars-NWE (netware emulator), Client version 4.90 SP1a does NOT work with Mars-NWE. I have both a real (ancient) NetWare 3.12 server, and a Mars-NWE server on my LAN. After I installed Client 4.90 SP1a, it would consistently lose its connections to the Mars-NWE server after about 1 minute (except that if a program had a file already open it could continue to access it). I could get it back for another minute by Right-clicking the big red "N", picking Netware Connections..., detaching both servers, then logging onto my 3.12 server again, then mapping the Mars-NWE drive again. But about 60 seconds later the Mars-NWE drive became inaccessable again. Switching back to Client 4.90 (which I fortunately still had on my hard disk drive) solved the problem. BTW, my workstation is running Windows 2000 (SP4). My Mars-NWE is version 0.99pl19, which is one rev back from the latest (and probably final) version, 0.99pl20. See: http://www.burtonsys.com/mars_ncpfs-HOWTO.html I supposed that 0.99pl20 might fix the incompatibility with Client 4.90 Sp1a, but I doubt it, because 0.99pl20 is much older than Client 4.90 Sp1a. Note "0.99pl20" is lower-case "0.99PL20", not "0.99p120" -Dave dave146 at burtonsys.com --------- End forwarded message ---------- --------- Begin forwarded message ---------- Path: prv-forum2.provo.novell.com!prv-forum1.provo.novell.com!prv-forum2.provo.novell.com.POSTED!53ab2750!not-for-mail From: "Tony Pedretti" Newsgroups: novell.support.netware.client.winnt-2x-xp References: <72Dtc.506$uj7.125@prv-forum2.provo.novell.com> Subject: Re: Novell NetWare Client 4.90 Sp1a doesn't work with Mars-NWE server (but 4.90 does) Organization: TransUnion LLC Message-ID: Date: Fri, 28 May 2004 14:25:47 GMT Xref: prv-forum1.provo.novell.com novell.support.netware.client.winnt-2x-xp:10086 Dave, Rumor has it connecting to NetWare 3.x servers with client 4.90 has been troublesome and in most cases it's recommended to stick with client 4.83. Beta SP2 for 4.90 is available for testing and is going well. In addition to this forum, report issues via the beta feedback link... http://www.novell.com/beta/auth/beta.jsp?pid=7474&type=1 Both beta SP2 and the feedback section are available at the above link and a TID on Product Updates. Should it not work, go off the main beta site to get it... http://www.novell.com/beta -- Tony Pedretti TransUnion LLC --------- End forwarded message ----------