Netware Client for FreeBSD

James Leone linuxcpa at netscape.net
Sun Sep 14 16:57:34 PDT 2003


I have access to a Netware IV server and am trying to connect to it from 
my FreeBSD 5.1-Current desktop.  My goal is to figure out how it works 
in FreeBSD, so I can add support for FreeBSD to the Netwhere client for 
Linux:

http://forge.novell.com/modules/xfmod/project/?nwcunix

It took me a long time to get the "recipe" for Linux correct, and I hope 
to get the FreeBSD "recipe" right in a reasonable amount of time.

I have compiled a series of clues, extracted from all of the 
documentation that I have searched for and read over. However, after 
following these steps, I am still unable to connect to the Netware 
server, and how they relate to each other is unclear.

1. . I compiled IPX support into the kernel

2. I installed the Ncplib port

There is a ncplib port in /usr/ports/net/ncplib. I performed a standard 
make install clean, and it seems to have installed correctly, however, I 
cannot find any useful instructions. The 
/usr/ports/net/ncplib/README.html file asks me to please read the 
description file, which only states this:

> cplib is a free client for Novell NetWare servers.
> WWW: http://rbp.chat.ru/ncplen.html
>
> --
> Boris Popov
> bp at butya.kz

However, when I go to http://rbp.chat.ru/ncplen.html which is refered to 
in README.html and the description file, the page says:

> An error occured while loading http://www http//rbp.chat.ru/ncplen.html:
>
>
> Unknown host www http

So, I take a look at /usr/ports/net/ncplib/pkg-plist file, it shows:

> bin/ncpasswd
> bin/ncplist
> bin/ncplogin
> bin/ncplogout
> bin/ncplpd
> bin/ncprint
> bin/ncpsend
> bin/ncpurge
> sbin/ncpsvc
> @cwd /
> modules/nwfs.ko
> sbin/mount_nwfs

There are man pages for these commands, but when I actually run the 
commands, they give me the following errors:

This command check the network for Netware servers:

> ncplist s
> Can't find any file server

I also check out the man page for "mount_nwfs" and run a command to log 
into the netware server on a temporary account that does not have a 
password. I have tested its access in Linux and Windows and they both work:

> mount_nwfs -S BAM -U testbsd -V sys /nw
> mount_nwfs: can't find server BAM: syserr = Protocol not supported


Obviously I am missing some information, so I search the net and find 
this page:

http://people.freebsd.org/~bp/ipxen.html

The first thing I noticed was that hte page is missing a date. This is 
important, because it instructs the user to replace some of the source 
code that comes with FreeBSD 5.1-Current with code available for 
download, and then to compile that into the kernel.  I did not do this, 
because I had no idea if these changes have already been merged into the 
tree. I did compile my kernel adding the IPX option, but did not 
download ipxrt.tgz, because IPXrouted was already installed on my 
machine. I also know from my experience with Linux, that Mars-nwe is 
required to login to a Netware 4.11 server.  I tried using Mars-nwe, but 
that didn't seem to help either. Yes, I read the man pages, but 
unfortunately, configuration information has not been provided.


Thanks to some additional searching and for the information recently 
provided by Cristian Salan I:

1. Added these lines to /etc/rc.conf:

> ifconfig_rl0f2_ipx="ipx 0x350" #IPX address family entry

(I also tried: ifconfig_rl0f2_ipx="ipx 12345678" #IPX address family entry)

>
> ipxrouted_enable="YES"          # Set to YES to run the IPX routing daemon

Note that when I run ifconfig, my device is normally "rl0".

2. Added these lines to /boot/loader.conf:

> if_ef_load="YES"
> nwfs_load="YES"
> ncp_load="YES"


3. However when I run ncplist s, I still get a goose egg:

> localhost# ifconfig
> rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         options=8<VLAN_MTU>
>         inet 192.168.0.133 netmask 0xffffff00 broadcast 192.168.0.255
>         inet6 fe80::240:f4ff:fe64:766f%rl0 prefixlen 64 scopeid 0x1
>         ether 00:40:f4:64:76:6f
>         media: Ethernet autoselect (100baseTX <full-duplex>)
>         status: active
> lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
> rl0f0: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         ether 00:40:f4:64:76:6f
> rl0f1: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         ether 00:40:f4:64:76:6f
> rl0f2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         ipx bc614e.40f464766f
>         inet6 fe80::240:f4ff:fe64:766f%rl0f2 prefixlen 64 scopeid 0x5
>         ether 00:40:f4:64:76:6f
> rl0f3: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         ether 00:40:f4:64:76:6f
> lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
>         inet6 ::1 prefixlen 128
>         inet6 fe80::1%lo0 prefixlen 64 scopeid 0x7
>         inet 127.0.0.1 netmask 0xff000000
> localhost# ncplist s
> Can't find any file server
> localhost#

4. I ran kldstat to determine if the required network drivers were loaded:

> localhost# kldstat
> Id Refs Address    Size     Name
>  1   13 0xc0100000 622f74   kernel
>  2    1 0xc0723000 2d38     if_ef.ko
>  3    1 0xc0726000 cb60     nwfs.ko
>  4    5 0xc0733000 2c0c     libmchain.ko
>  5    2 0xc0736000 ace8     ncp.ko
>  6    1 0xc0741000 4c1d0    acpi.ko
>  7    1 0xc28b4000 18000    linux.ko
>  8    1 0xc2be4000 1f000    smbfs.ko
>  9    2 0xc2c10000 3000     libiconv.ko
> localhost#

As mentioned IPX is compiled into the kernel.


5. /var/log/nw.log shows:

> 09.14,11:37:53 NWS 0   0:Starting Version: 0.99pl19
> 09.14,11:37:53 NWS 0   0:set_emu_tli:
> Can't find ipx interface for net=a
> 09.14,11:37:53 NWS 0   0:SERVER name='LOCALHOST.LOCALDOMAIN', INTERNAL 
> NET=0xa, NODE=0x00:00:00:00:00:00
> 09.14,11:37:53 NWS 0   0:USE_PERMANENT_OUT_SOCKET enabled
> 09.14,11:37:53 NWS 0   0:IPX_MAX_DATA=1470, RW_BUFFERSIZE =1444
> 09.14,11:37:53 NWB 0   0:Starting Version: 0.99pl19
> 09.14,11:37:53 NWB 0   0:Add/Change User='SUPERVISOR', UnixUser='root'
> 09.14,11:37:53 NWB 0   0:Add/Change User='GUEST', UnixUser='nobody'
> 09.14,11:37:53 NWB 0   0:set_emu_tli:
> Can't find ipx interface for net=a
> 09.14,11:37:53 NWB 0   0:USE_PERMANENT_OUT_SOCKET enabled
> 09.14,11:37:55 NCP 0   0:Starting Version: 0.99pl19
> 09.14,11:37:55 NCP 0   0:set_emu_tli:
> Can't find ipx interface for net=a
> 09.14,11:37:55 NCP 0   0:USE_PERMANENT_OUT_SOCKET enabled
> 09.14,11:37:57 NWS 0   0:write_wdata:Can't assign requested address
> to NWBIND
> 09.14,11:41:30 NWS 0   0:write_wdata:Can't assign requested address
> to NCPSERV
> 09.14,11:41:30 NWS 0   0:write_wdata:Can't assign requested address
> to NWBIND

6. This is what /var/log/debug.log shows:

> Sep 14 12:40:24 localhost IPXrouted[314]: ADD dst 0#0:0:0:0:0:0, 
> router 0#0:40:f4:64:76:6f, metric 0, ticks 0, flags UP state 
> INTERFACE|CHANGED
> Sep 14 12:45:24 localhost IPXrouted[314]: ADD dst 
> 92ab8232#0:0:0:0:0:0, router 92ab8232#0:0:0:0:0:1, metric 0, ticks 0, 
> flags UP state INTERFACE|CHANGED
> Sep 14 12:58:46 localhost root: spamd starting
> Sep 14 13:03:33 localhost IPXrouted[313]: ADD dst 
> 92ab8232#0:0:0:0:0:0, router 92ab8232#0:0:0:0:0:1, metric 0, ticks 0, 
> flags UP state INTERFACE|CHANGED
> Sep 14 13:57:51 localhost root: spamd starting
> Sep 14 14:03:53 localhost root: spamd starting
> Sep 14 14:24:36 localhost root: spamd starting
> Sep 14 14:28:24 localhost IPXrouted[311]: ADD dst 0#0:0:0:0:0:0, 
> router 0#0:40:f4:64:76:6f, metric 0, ticks 0, flags UP state 
> INTERFACE|CHANGED
> Sep 14 14:28:37 localhost root: spamd starting
> Sep 14 14:58:49 localhost IPXrouted[311]: ADD dst 0#0:0:0:0:0:0, 
> router 0#0:40:f4:64:76:6f, metric 0, ticks 0, flags UP state 
> INTERFACE|CHANGED
> Sep 14 14:59:02 localhost root: spamd starting
> Sep 14 15:20:45 localhost IPXrouted[311]: ADD dst 0#0:0:0:0:0:0, 
> router 0#0:40:f4:64:76:6f, metric 0, ticks 0, flags UP state 
> INTERFACE|CHANGED
> Sep 14 15:20:58 localhost root: spamd starting
> Sep 14 16:14:34 localhost IPXrouted[312]: ADD dst bc614e#0:0:0:0:0:0, 
> router bc614e#0:40:f4:64:76:6f, metric 0, ticks 0, flags UP state 
> INTERFACE|CHANGED
> Sep 14 16:14:47 localhost root: spamd starting

7. This is what /var/log/messages shows:

> Sep 14 16:15:56 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:16:00 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:16:01 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:16:05 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:16:11 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:16:15 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:16:31 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:16:35 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:17:11 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:17:15 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:18:31 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:18:35 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:21:11 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:21:15 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:26:31 localhost IPXrouted[666]: bind: Address already in use
> Sep 14 16:26:35 localhost IPXrouted[668]: bind: Address already in use
> Sep 14 16:26:59 localhost IPXrouted[820]: bind: Address already in use
> Sep 14 16:27:34 localhost last message repeated 3 times
> Sep 14 16:29:34 localhost last message repeated 2 times

Top shows ipxrouted as running:

> st pid:  1083;  load averages:  1.01,  0.90,  0.54    up 0+00:34:06  
> 16:47:37
> 63 processes:  3 running, 60 sleeping
> CPU states:  3.8% user,  0.0% nice,  2.7% system,  1.1% interrupt, 
> 92.3% idle
> Mem: 152M Active, 7168K Inact, 47M Wired, 15M Cache, 35M Buf, 24M Free
> Swap: 491M Total, 60K Used, 490M Free
>
>   PID USERNAME  PRI NICE   SIZE    RES STATE    TIME   WCPU    CPU COMMAND
>   570 root      116    0  1380K   900K select   0:00  0.00%  0.00% inetd
>   312 root       96    0  1200K   672K select   0:00  0.00%  0.00% 
> IPXrouted
>   localhost#



There are two other files that seem to be a part of the whole puzzle, 
that I have configured as well:

1. /usr/local/etc/rc.d/nwfs.sh - this mentions /root/.nwfsrc  and reads:

> #!/bin/sh
> #
> # $FreeBSD: src/share/examples/nwclient/nwfs.sh.sample,v 1.1 
> 1999/11/03 12:06:13 bp Exp $
> #
> # Location: /usr/local/etc/rc.d/nwfs.sh
> #
> # Simple script to mount NetWare volumes at startup.
> # It assumes that all mount points described in fstab file and password
> # entries listed in /root/.nwfsrc file. See mount_nwfs(8) for details.
> #
>
> mount=/sbin/mount
> umount=/sbin/umount
> HOME=/root; export HOME
> vols="sys"
>
> if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
>     echo -n "Mounting NetWare volumes: "
>     for vol in ${vols}; do
>         $mount $vol
>         echo -n "$vol "
>     done
>     echo "Done"
> elif [ "x$1" = "xstop" ]; then
>     echo -n "Unmounting NetWare mount points: "
>     for vol in ${vols}; do
>         $umount $vol
>         echo -n "$vol "
>     done
>     echo "Done"
> else
>     echo "Unknown command $1"
> fi

This seems like it should be used with  $HOME/.nwfsrc, which reads:

> # $FreeBSD: src/share/examples/nwclient/dot.nwfsrc,v 1.2 2002/04/20 
> 05:04:21 bp Exp $
> #
> # Example for .nwfsrc file
> #
> # ncplib lookups configuration files in next order:
> #    1. ~/.nwfsrc
> #    2. /etc/nwfs.conf - if this file found it will
> #       override values with same keys from user files.
> #
> #
> # This file consist of a set of sections. Each section started by 
> section name
> # surrounded by square brackets:
> # [section_name]
> #
> # End of the section marked either by new section or by the end of file.
> # Each section can contain zero or more parameters:
> # [section_name]
> # key=value
> #
> # where 'key' is a represents parameter name and 'value' a value assigned
> # to this parameter.
> #
> # NetWare library uses next forms of section names:
> # [SERVER]
> # [SERVER:USER]
> # [SERVER:QUEUE]
> #
> # When user issues any ncp* command that requires create of new connection
> # to a NetWare server, library function lookups for parameters in the
> # corresponding section. First it looks in the [SERVER] section and 
> then in
> # the [SERVER:USER] section. Please note that server and user names 
> should be
> # in the upper case.
> #
>
> # Following parameters are valid for [SERVER] or [SERVER:USER] section:
> [BAM:james]
> # if you don't use password leave value empty
> #password=ghost
>
> # how many retries before error, default 10
> retry_count=10
>
> # timeout for request to complete
> timeout=5
>
> # access mode to connection, default 0700
> #access_mode=0700
>
> # signature level, default 0 - no signatures
> #sig_level=0
>
> # force bindery login, default no
> bindery=no
>
> # default print queue for user, default is none
> # print_queue=QE_BJ
>
>
> #[ANOTHERSERVER:PLAINUSER]
> # in this case user have an empty password
> #password=
>
> # Defaults for printer queues defined as [SERVER:QUEUE]
> # communication parameters taken from [SERVER:USER] section
> # see man ncprint(1) for queue parameters description
> # note: if any banner related option is specified, banner will be printed.
> [BAM:HP4000_Q]
>
> path_name=/nw
> #file_name=passwd
> banner_name=    MY FIRST FREEBSD PRINT WITH NETWARE
> #job_desc=Printing from FreeBSD
>
> #lines=66
> #rows=80
> copies=1
> tab_size=8
> no_form_feed=yes
> #form_number=0


Here is what happens when I run /usr/local/etc/rc.d/nwfs.sh:

> localhost# /usr/local/etc/rc.d/nwfs.sh
> Mounting NetWare volumes: mount: sys: unknown special file or file system
> sys Done
> localhost#

Here is what happens when I run mount_nwfs

> localhost# mount_nwfs
> usage: mount_nwfs [-Chv] -S server -U user [-connection options]
>                   -V volume [-M mode] [-c case] [-d mode] [-f mode]
>                   [-g gid] [-l locale] [-n os2] [-u uid] [-w scheme]
>                   node
>        mount_nwfs [-options] /server:user/volume[/path] node
> localhost# mount_nwfs -Chv
> mount_nwfs: no default connection found: syserr = Bad file descriptor
> localhost#

Note that I see no explanation of the [-Chv] portion of the command in 
the man page.


So, what do I need to do to get this to work ?


James Leone















More information about the freebsd-questions mailing list