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