diff --git a/README b/README index 47cef65..d053e9a 100644 --- a/README +++ b/README @@ -86,7 +86,7 @@ Topics for the list: - IPX routing and router daemons under Linux - and, last but not least, the LinWare daemon -You can subscribe to the list by sending command "add linware" in mail +You can subscribe to the list by sending command "ADD linware" in mail message body to address: "listserv@sh.cvut.cz". Your list postings should be sent to address: "linware@sh.cvut.cz". diff --git a/config.h b/config.h new file mode 100644 index 0000000..3549736 --- /dev/null +++ b/config.h @@ -0,0 +1,90 @@ +/* config.h: 22-Jun-00 */ +/* some of this config is needed by make, others by cc */ + +#define DO_DEBUG 1 /* compile in debug code */ +#define FUNC_17_02_IS_DEBUG 0 /* allow debugging with mars_dosutils */ + +#define DO_TESTING 0 /* set this to "1" to test only */ + +#if DO_TESTING +# define FILENAME_NW_INI "./nw.ini" /* full name of ini (conf) file */ +# define PATHNAME_PROGS "." /* where to find the executables */ +# define PATHNAME_BINDERY "." /* directory for bindery-files */ +#else +# define FILENAME_NW_INI "/etc/nwserv.conf" + /* full name of ini (conf) file */ +# define PATHNAME_PROGS "/usr/sbin" /* where to find the executables */ +# define PATHNAME_BINDERY "/var/nwserv/db" /* directory for bindery-files */ +#endif + +#define PATHNAME_PIDFILES "/var/run" /* directory for 'pidfiles' */ + +/* ----- logging the logins via "mars_nwe" in utmp/wtmp ------------------ */ +#define FILENAME_UTMP UTMP_FILE /* use "NULL" instead of UTMP_FILE */ + /* to disable logging via utmp */ +#define FILENAME_WTMP WTMP_FILE /* use "NULL" instead of WTMP_FILE */ + /* to disable logging via wtmp */ + +#define NETWORK_SERIAL_NMBR 0x44444444L + /* serial number (4 byte) */ +#define NETWORK_APPL_NMBR 0x2222 /* application number (2 byte) */ + +#define MAX_CONNECTIONS 50 /* max. number of simultaneous */ + /* connections handled by mars_nwe */ + /* !! NOTE !! */ + /* If set > 255 some NCP calls will probably not work, try it with caution */ + /* and you should apply examples/kpatch2.0.29 to kernels prior 2.0.32 */ + + +#define IPX_DATA_GR_546 2 /* 0 = max. IPX Packets = 546 +30 Byte ( 512 Byte RWBuff) */ + /* 1 = max. IPX packets = 1058 +30 Byte (1024 Byte RWBuff) */ + /* 2 = max. IPX packets = 1470 +30 Byte (1444 Byte RWBuff) */ + /* 3 = max. IPX packets = 4130 +30 Byte (4096 Byte RWBuff) */ + +#define ENABLE_BURSTMODE 0 /* 0 = disable burstmode, 1 = enable burstmode */ + /* still NOT working correct !!!!! */ + /* to get Burstmode really enabled, section '6' in conf-file */ + /* must be set to a value > 1 (3.12 Server) */ + /* and kernel-patch examples/kpatch2.0.29 should be used for */ + /* kernels prior 2.0.32 */ + + +#define USE_MMAP 1 /* use mmap systen call, not always best choice */ + +#if 0 +#define SOCK_EXTERN 0x8005 /* creat socket for external access */ + /* i.e. Xmarsmon from H. Buchholz */ +#endif + +/* <--------------------------------------------------------------------> */ +#define MAX_NW_VOLS 10 /* max. number of mars_nwe-volumes */ +#define MAX_FILE_HANDLES_CONN 255 /* max. number of open files per */ + /* connection */ +/* <--------------- new namespace services call -----------------------> */ +#define MAX_DIR_BASE_ENTRIES 50 /* max. cached base entries per */ + /* connection */ +#define WITH_NAME_SPACE_CALLS 1 /* Namespace Calls are only minimal */ + /* supported so far. */ + /* To enable testing of them this */ + /* entry must be changed to '1' and */ + /* entry '6' in ini file should be set*/ + /* to > '0', too. */ +/* <--------------------------------------------------------------------> */ +#define HANDLE_ALL_SAP_TYPS 1 /* if set to 0 only SAP-Typ 4 Servers */ + /* will be put into routing table and */ + /* if set to 1 all SAP Typs will be */ + /* used. */ + +#define PERSISTENT_SYMLINKS 0 /* change to '1' for persistent symlinks */ + /* main idea from Victor Khimenko */ + /* still NOT working !! */ + +/* <--------------- next is for linux only ----------------------------> */ +#define INTERNAL_RIP_SAP 1 /* use internal/own rip/sap routines */ + +#define SHADOW_PWD 0 /* change to '1' for shadow passwds */ +#define QUOTA_SUPPORT 0 /* change to '1' for quota support */ + +/* for sending 'Request being serviced' replys, /lenz */ +#define CALL_NWCONN_OVER_SOCKET 0 + diff --git a/doc/CHANGES b/doc/CHANGES index 21381c6..dfdea30 100644 --- a/doc/CHANGES +++ b/doc/CHANGES @@ -538,11 +538,13 @@ Erste 'oeffentliche' Version - trustee fix <----- ^^^^^^^^^^ pl19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 01-Jun-00:trustee.c, SIG_SEGV error. -- 22-Jun-00:added patches from Sergey Lentsov +- 22-Jun-00:added patches from Sergey Lentsov - 14-Aug-00:added patch from Paolo Prandini (access to printerqueues,nwbind.c) - 15-Aug-00:correction for unix rights of trustee/attrib directory (x flag) (hint: Nagy Zoltan Mark) - 01-Sep-00:added real unix acces rights patch from Przemyslaw Czerpak <----- ^^^^^^^^^^ pl20 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - +- 14-Jun-03:added patch from Marco Cavallini + Clear Connection Number (nwbind.c) +<----- ^^^^^^^^^^ pl21 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \ No newline at end of file diff --git a/doc/CREDITS b/doc/CREDITS index 3fd7f73..c8ea5c5 100644 --- a/doc/CREDITS +++ b/doc/CREDITS @@ -1,5 +1,9 @@ Sorry, but this list will *never* be complete. ----------------------------------------------- + +Marco Cavallini + added Clear Connection + Michael Beddow translated doc for PIPE-FS diff --git a/makefile.unx b/makefile.unx index 7b90408..62e53d3 100644 --- a/makefile.unx +++ b/makefile.unx @@ -1,5 +1,5 @@ #if 0 -#makefile.unx 30-May-00 +#makefile.unx 14-05-2003 #endif VPATH=$(V_VPATH) @@ -9,7 +9,7 @@ C=.c V_H=0 V_L=99 -P_L=20 +P_L=21 #define D_P_L 1 DISTRIB=mars_nwe @@ -27,7 +27,7 @@ MAKEPATCH=diff -rub --new-file DESTMAKEFILE=Makefile.o #if 0 -all: $(DESTMAKEFILE) +all: $(DESTMAKEFILE) $(MAKE) -f $(DESTMAKEFILE) n_$@ routed: $(DESTMAKEFILE) @@ -103,7 +103,7 @@ NWROUTE_O=nwroute1$(O) NWROUTED= # else # ifndef INTERNAL_RIP_SAP -# define INTERNAL_RIP_SAP 1 +# define INTERNAL_RIP_SAP 1 # endif EMUTLIOBJ=emutli$(O) # if INTERNAL_RIP_SAP @@ -136,16 +136,16 @@ OBJ8= $(OBJ6) OBJ9= tools$(O) nwfname$(O) unxfile$(O) nwvolume$(O) nwattrib$(O) trustee$(O) OBJS= $(EMUTLIOBJ) net1$(O) tools$(O) \ - $(EMUTLIOBJ1) $(NWROUTE_O) \ - connect$(O) namspace$(O) nwvolume$(O) nwfile$(O) unxfile$(O)\ - nwqconn$(O) nameos2$(O) nwfname$(O) nwshare$(O) extpipe$(O) \ - nwattrib$(O) trustee$(O) \ - nwdbm$(O) nwcrypt$(O) unxlog$(O) sema$(O) nwqueue$(O) \ - $(PROG2)$(O) $(PROG3)$(O) $(PROG4)$(O) $(PROG5)$(O) $(PROG6)$(O) \ - $(PROG7)$(O) $(PROG8)$(O) $(PROG9)$(O) + $(EMUTLIOBJ1) $(NWROUTE_O) \ + connect$(O) namspace$(O) nwvolume$(O) nwfile$(O) unxfile$(O)\ + nwqconn$(O) nameos2$(O) nwfname$(O) nwshare$(O) extpipe$(O) \ + nwattrib$(O) trustee$(O) \ + nwdbm$(O) nwcrypt$(O) unxlog$(O) sema$(O) nwqueue$(O) \ + $(PROG2)$(O) $(PROG3)$(O) $(PROG4)$(O) $(PROG5)$(O) $(PROG6)$(O) \ + $(PROG7)$(O) $(PROG8)$(O) $(PROG9)$(O) HOBJ3= $(PROG3)$(O) connect$(O) namspace$(O) nwvolume$(O) nwfile$(O) \ - unxfile$(O) + unxfile$(O) HOBJ6= $(PROG6)$(O) sema$(O) @@ -206,22 +206,22 @@ n_install: cd $(VPATH) && $(INSTALL) -d $(M_PATHNAME_PROGS) && cd $(OBJDIR) cd $(VPATH) && $(INSTALL) $(INSTALLPROGS) $(M_PATHNAME_PROGS) && cd $(OBJDIR) @-if [ -r /sbin/nwserv ] && [ -r /usr/sbin/nwserv ] ; then \ - echo "remove old version in /sbin ?" ; \ - (cd /sbin && rm -i nwserv nwbind ncpserv nwconn nwclient nwrouted) ; \ - fi ; + echo "remove old version in /sbin ?" ; \ + (cd /sbin && rm -i nwserv nwbind ncpserv nwconn nwclient nwrouted) ; \ + fi ; @-if [ -r /etc/nwobj.pag ] ; then \ - ( \ + ( \ if [ ! -r $(M_PATHNAME_BINDERY) ] ; then \ - if $(VPATH)/tools.sh yesno "move bindery files from /etc to $(M_PATHNAME_BINDERY) ?" ; then \ - mkdir -p $(M_PATHNAME_BINDERY); \ - (cd /etc && mv \ - nwiobj.pag nwiobj.dir nwobj.pag nwobj.dir \ - nwprop.pag nwprop.dir nwval.pag nwval.dir \ - $(M_PATHNAME_BINDERY) ) ; \ - fi; \ - fi; \ - ) \ - fi ; + if $(VPATH)/tools.sh yesno "move bindery files from /etc to $(M_PATHNAME_BINDERY) ?" ; then \ + mkdir -p $(M_PATHNAME_BINDERY); \ + (cd /etc && mv \ + nwiobj.pag nwiobj.dir nwobj.pag nwobj.dir \ + nwprop.pag nwprop.dir nwval.pag nwval.dir \ + $(M_PATHNAME_BINDERY) ) ; \ + fi; \ + fi; \ + ) \ + fi ; @cd $(VPATH) && (if [ -r $(M_FILENAME_NW_INI) ] ; then \ echo ""; \ echo "********************************************************"; \ diff --git a/mk.li b/mk.li new file mode 100755 index 0000000..0be7419 --- /dev/null +++ b/mk.li @@ -0,0 +1,143 @@ +#!/bin/sh +# mk.li 15-Dec-99 +# please edit this file ! + +mk() +{ + MYBASE=`pwd`; + ERRFILE=$TMP/`basename $MYBASE`.err; + rm -f $ERRFILE; + if [ $V_VPATH = '..' ] ; then + if [ ! -d $OBJDIR ] ; then mkdir $OBJDIR; fi + cd $OBJDIR; + fi + if $MAKE -f $V_VPATH/makefile.unx $@ 2>&1;then true;else kill -HUP $MK_PPID;fi | tee $ERRFILE + if [ $V_VPATH = '..' ] ; then + cd ..; + fi + if [ -f $ERRFILE ] ; then + chmod 666 $ERRFILE + fi +} + +print_error() +{ + echo "" + echo "The errors are also reported in '$ERRFILE'" + echo "=============================================================" +} + +TOLOWER='tr "[A-Z]" "[a-z]"' +UNX=`uname -s | $TOLOWER` +MASCHINE=`uname -m` +MK_PPID=$$ +export MK_PPID + +trap 'print_error; exit 1' 1 + +case $UNX in + linux) + V_VPATH=".." + OBJDIR="obj" + CC=cc + CPP="cc -E" +# CFLAGS="-pipe -O2 -fomit-frame-pointer" +# problems gcc2.5.8 ^^^^^^^^^^^^^^^^^^^^^ +# CFLAGS="-pipe -Wall -Dsignal=sysv_signal" + CFLAGS="$RPM_OPT_FLAGS -pipe -Wall -D_GNU_SOURCE" + + case $MASCHINE in + sparc) + HOSTCFLAGS="-DLINUX -DSPARC" + ;; + *) + HOSTCFLAGS="-DLINUX" + ;; + esac + +if [ -f /usr/lib/libgdbm.a ] || [ -f /usr/lib/libgdbm.so ] ; then + NDBMLIB="-lgdbm" +else + NDBMLIB="-ldbm" +fi + +if [ -f /usr/lib/libcrypt.so ] ; then + CRYPTLIB="-lcrypt" +else + CRYPTLIB="" +fi + +if [ -f /usr/include/sys/quota.h ] ; then + HOSTCFLAGS="$HOSTCFLAGS -DQTAINSYS" +fi + + NSLLIB="" + MAKE=make + TMP=/tmp + INSTALL=install + ;; +########### SYSV (UnixWare) ############## + unix_sv) + V_VPATH="." + OBJDIR="." + CC=cc + CPP="cc -E" + CFLAGS= + HOSTCFLAGS="" + NDBMLIB="/usr/ucblib/libucb.a" + CRYPTLIB="-lgen" + NSLLIB="-lnsl" + MAKE=make + TMP=/tmp + INSTALL=/usr/ucb/install + ;; + +########## FreeBSD ############ +# created by Boris Popov + freebsd) + V_VPATH=".." + OBJDIR="obj" + CC=gcc + CPP="gcc -E" + if [ "x$CFLAGS" = "x" ]; then + CFLAGS="native" + fi + + HOSTCFLAGS="-DFREEBSD -DLINUX" + + CRYPTLIB="-lcrypt -lipx" + + NSLLIB="" + MAKE=make + TMP="./" + INSTALL="install -c" + ;; + + *) echo "mk.li: Unknown or not supported OS, probably you must set \$UNX" + ;; +esac + +## BEGIN try to pass around what the dbm is to the compiler (acli 19970709) +case "$NDBMLIB" in +*gdbm*) + HOSTCFLAGS="$HOSTCFLAGS -DUSE_GDBM" + ;; +esac +## END + + +export CC +export CPP +if [ "X$CFLAGS" != "Xnative" ]; then + export CFLAGS +fi +export HOSTCFLAGS +export NDBMLIB +export CRYPTLIB +export NSLLIB +export TMP +export INSTALL +export V_VPATH +export OBJDIR + +mk $@ diff --git a/nw.ini b/nw.ini new file mode 100644 index 0000000..e7fb1a6 --- /dev/null +++ b/nw.ini @@ -0,0 +1,889 @@ +# +# This is the configuration-file for "mars_nwe", a free netware-emulator +# for Linux. +# +# last changed: 01-Sep-00 +# new volume flag 'x' for unix access rights (Przemyslaw Czerpak) 0.99.pl20 +# comment out second printer and printserver entry in 0.99.pl20 +# debug log section changed some values to '1' in 0.99.pl20 +# +# !! section 31 : flags added in 0.99.pl18, but not used +# !! section 8 : new flags added in 0.99.pl18 !! +# !! section 9 : default directory/file umask changed in 0.99.pl9 !! +# !! section 46 : default attrib location changed in 0.99.pl9 !! +# !! section 5 : deleting of ipx devices/routes changed in 0.99.pl6 !! +# !! section 4 : automatic creation of ipx-interfaces changed in 0.98.pl9 !! +# +# since version 0.98.pl11: +# the most important options in config.h can now be altered in +# this file begin at section 60. +# +# Most configuration errors depend on section 4. +# !! Please read section 4 very carefully. !! +# + +# This file specifies which Linux-resources (printers, users, directories) +# should be accessible to the DOS-clients via "mars_nwe". Furthermore +# some general parameters are configured here. +# Some options of "mars_nwe" can only be altered by editing the the file +# `config.h' and re-compiling "mars_nwe", please see there for more +# information. + + +# Syntax of this config-file: +# - everything after a "#" is treated as a comment (particularly +# it does never belong to the values themselves) +# - entries _must_ begin with a number, indicating the section +# they belong to +# - hexadecimal values are prepended by "0x" +# +# All examples are verbatim. +# +# The term "DOS-client" does not refer to the special operating-system +# "DOS" in _this_ file. "DOS-client" is only a synomym for all possible +# ipx-clients (it's choosen for the people who are confused by the +# meaning of "client" and "server"). +# The "Linux-side" of the game is always the "mars_nwe"-server. + + +# ========================================================================= +# Section 1: volumes (required) +# +# In this section you list all Linux-directories accessible via "mars_nwe". +# +# To be more precise: a mapping from Linux-directories to mars_nwe-volumes +# is done. (Volumes are the beasts you can map to drive letters under DOS +# using "map.exe"). +# +# Linux-directory mars_nwe-volume map.exe DOS-Drive +# /var/local/nwe/SYS -------> SYS -------------> W: +# +# More than one entry is allowed in this section. +# The maximum number of volumes must be specified in `config.h' +# or in section 61 in this file. +# +# Please note that at least the volume "SYS" must be defined and it must +# contain the following sub-directories: LOGIN, PUBLIC, SYSTEM, MAIL. +# See the installation-instructions in the doc-directory for more infos +# and the info to section 16 (tests on startup) in this file. +# +# !! NOTE !! +# First defined volume should always named 'SYS'. +# +# +# ------------------------------------------------------------------------- +# Syntax: +# 1 VOLUMENAME DIRECTORY [OPTIONS] [UMASKDIR UMASKFILE] +# +# VOLUMENAME: the name of the mars_nwe-volume (max. 8 characters) +# DIRECTORY: the directory on your Linux-system associated with that +# volume; use the special name "~" to refer to the users +# individual home-directory. +# A directory entry like "~/tmp" also work since 0.99.pl3. +# +# If the netadmin wants to map the homedirectories with the MAP-Command to +# every user, he can do it in two variants: +# We suppose that the user test2 is logged in MARS_NWE. He has files +# earlier stored in his homedirectory /home/test2. +# In case of entry 1 in /etc/nwserv.conf (naturally amongst other entries) +# there are other results of the MAP-command. +# +# Variant 1 Variant 2 +# +#DOS-Command MAP H:=MARS\HOMEDIR: MAP H:=MARS\HOMEDIR: +# +#Entry in /etc/nwserv.conf +# 1 HOMEDIR ~ k 1 HOMEDIR /home k +# +#Result of DIR *.* All files stored in All homedirs of the +# /home/test2 will shown. users will shown. +# Showing his own files +# it is a command like +# CD test2 and then +# dir *.* necessary. +# +# OPTIONS: none or some of the following characters (without a seperator) +# - Placeholder. +# +# Next two options control DOS and OS/2 namespace. +# i ignore case, handle mixing upper/lowercase filenames (slow) +# should only be used if you really need it. +# k use lowercase-filenames (if you don't set this, +# and you don't set 'i' all files _must_ be upper-case) +# +# m removable volume (e.g. cd-roms) or volumes, which +# should be remountable when mars_nwe is running. +# n (n)o fixed inodes. This volume do not have fixed inodes. +# e.g. DOS-Volumes, CD-ROMS. This flag is very important for +# attrib and trustee handling. +# o (lowercase o) +# volume has only one filesystem/device/namespace +# this is for filesystems with high inode > 0xFFFFFFF. +# because for namespace services mars_nwe normally use the +# first 4 bit of 32 bit inode for distinguish +# between several devices/namespaces for one volume. +# p "PIPE"-filesystem. All files are pipe commands. +# See `doc/PIPE-FS'. +# r volume is read-only and always reports "0 byte free" +# (this is intended for copies of CD-ROMs on harddisks) +# t volume has trustees. +# Real access is trustee rights + unix rights. +# Trustees are stored in extra directories, +# normally under /var/nwserv/trustees. +# Must only be used for volume which have fix inodes. +# A volume with trustees should never be renamed. +# For some more notes see 'doc/TRUSTEES'. +# x use unix access rights (for use with ACL) +# T volume has trustees & ignore the rights granted in UN*X filesystem +# exactly like option "t" except that the unix rights are not added +# +# additional Namespaces +# O (uppercase o) +# + OS/2 namespace (useful for Win95 clients, see doc/FAQS). +# N + NFS namespace (not really tested). +# +# +# UMASKDIR: default directory creat umask. +# UMASKFILE: default file creat umask. +# values are always octal, they overwrite standard +# section 9 values for this specific volume. +# +# ------------------------------------------------------------------------- +# +# Examples: +# 1 SYS /var/local/nwe/SYS kt 711 600 +# 1 CDROM /cdrom kmnor +# 1 HOME ~ k -1 +# 1 HOMETMP ~/tmp kiO +# 1 PRIVAT ~/privat kO 700 600 +# 1 WORLD /var/world kiO 777 666 +# 1 FAXQ /var/spool/fax/faxqueue k + + 1 SYS /u3/SYS/ kt 711 600 + + +# ========================================================================= +# Section 2: servername (optional) +# +# The servername is the name under which this server will show up when +# using tools like "slist" (server-list). +# +# If you don't supply an entry for this section, the hostname of your +# Linux-machine will be converted to all-uppercase and used as the servername. +# +# ------------------------------------------------------------------------- +# Syntax: +# 2 SERVERNAME +# +# SERVERNAME: a name for this nw-server +# ------------------------------------------------------------------------- +# +# Example: +# 2 MARS # name of the server would be "MARS" + + +# ========================================================================= +# Section 3: Number of the internal network (required) +# +# If have dealt with the TCP/IP-configuration of your Linux-Box, the term +# "ip-address" may be familiar to you. It's a numer that uniquely +# identifies your machine in the internet. +# As you might already expect, even the IPX-people use a unique number to +# identify each other. Addresses in the IPX-world always consist of a +# 4-byte "network-number" plus a 6-byte "node-number" (remember the +# ip-addresses also use 4-bytes). +# +# The numbering-rule for ipx-clients is easy: their "address" is the +# external-network of the server they are connected to plus the +# hardware-address of their own ethernet-card (6 byte). As a result of this +# rule, the clients can determine their address automatically (by listening +# to the server and looking at their own ethernet-hardware) and no +# configuration-files on the clients-side have to be maintained. (It would +# really be a nasty thing if you think of very many DOS-clients [remember: +# DOS is an OS where ordinary users can screw up the configuration files].) +# +# For internal routing purposes, a netware-server has an "internal network" +# +# As there is no organisation which regulates the use of network-numbers +# in the IPX-world, you have to run "slist" (under DOS or Linux) to +# determine a number that isn't already used by another server on your +# net. You better double-check and ask the other network administrators +# before using a random value because not all servers might be on-line when +# you "listen" to the net. +# +# A reasonable choice for the internal net-number of your mars_nwe-server +# could be the ip-address of your Linux-Box. It is reasonable because +# ip-addresse are unique and if every nw-administrator uses only this uniqe +# value, potential conflicts will be minimized. Of course this choice is +# no guarantee and it only works if your Linux-Box IP is well configured. +# +# Please note that you have to specify the address of your "internal +# ipx-network" in hexadecimal format (the leading "0x" indicates it). +# +# +# ------------------------------------------------------------------------- +# Syntax: +# 3 INTERNAL_NET [NODE] +# +# INTERNAL_NET: the hexadecimal value of your "internal ipx-network". Use +# "0x0" or "auto" to refer to your ip-addresse (it's a kind of +# automagically setup) +# NODE: use "1" if you don't know what this entry is for (optional) +# ------------------------------------------------------------------------- +# +# Example: +# 3 auto 1 # 'automatic' setup, use ip-number as internal net + + 3 auto + + +# ========================================================================= +# Section 4: IPX-devices (strongly recommended) +# +# This section contains information for the ipx-router built into mars_nwe +# and/or the external program "nwrouted". +# Both processes exchange the ipx-packets between your machine and the rest +# of the world (in other words: their functionallity is essential). Of +# course, to use one of both is already sufficient. +# +# Note for people with other IPX/NCP servers on the net: +# - choose the same frame-type as the other servers use +# - make sure your network-number is not already in use by another +# server (see the output of "slist" under Linux or DOS) +# +# Under Linux, it is possible to let the kernel creat all ipx-devices +# automatically for you. This is only possible (and only makes sense then) +# if there are other IPX/NCP servers on the same net which are setup +# correctly. It can be switched on in section '5'. +# ------------------------------------------------------------------------- +# Syntax: +# 4 NET_NUMBER DEVICE FRAME [TICKS] +# +# NET_NUMBER: this number is determined by the router of the physical +# network you're attached to. Use "0x0" to use the entry +# for all network number match. +# +# DEVICE: the network-interface associated with the NET_NUMBER. Use +# a "*" (star) to use this entry for all devices match. +# +# FRAME: the frame-type of the data-packets on your local network. +# Possible values are: +# +# ethernet_ii :best for mixed(ipx, ip) environments +# 802.2 :Novell uses this as default since 3.12 +# 802.3 :older frame typ, some boot proms use it +# snap :normally not used +# token :for token ring cards +# auto :automatic detection of the frame-type used +# in your ipx-environment +# +# TICKS: the time data-packets need to get delivered over a +# certain interface. If your connection goes through several +# routers, the shortest path can be determined by summing up +# all ticks for every route and compare the results. +# (1 tick = 1/18th second), default=1 +# Note: If ticks > 6 then the internal router handles +# RIP/SAP specially. (RIP/SAP filtering) +# +# !! NOTE !! +# Automatic detection in this section means that ipx-interfaces which +# are created by other instances than the server/router, +# e.g. pppd, ipppd or ipx_interface, will be detected and inserted/removed +# in internal device/routing table at runtime. +# +# Automatic kernel creation of interfaces can be switched on in section 5. +# ------------------------------------------------------------------------- +# +# Examples: +# 4 0x10 eth0 802.3 1 # setup ethernet with frame 802.3 +# 4 0xa20 arc0 802.3 1 # standard arcnet (TRXNET) +# +# 4 0x0 * AUTO 1 # auto detection of all ipx-interfaces. +# 4 0x0 eth0 AUTO 1 # auto detection of eth0 frames. +# 4 0x0 eth0 802.2 1 # auto detection of eth0 frame 802.2. +# +# Note: If ticks > 6 then the internal router handles RIP/SAP specially. +# (RIP/SAP filtering) +# 4 0x0 isdn0 802.3 7 # auto isdn interface with ethernet encap. +# 4 0x0 ippp0 AUTO 7 # auto ippp0 (isdn ppp) interface. +# 4 0x0 ppp0 AUTO 7 # auto detection of ppp0 interface. + + + 4 0x22 eth0 ethernet_ii 1 + 4 0x0 * AUTO 1 + +# Section 5: special device flags +# ========================================================================= +# Flags +# 0x1 do not remove by nwserv/nwrouted added routes and ipx-devices +# beyond the lifetime of the server or router. +# If this flag is not set then all by nwserv/nwrouted added +# ipx-devices/routes will be deleted when +# nwserv/nwrouted ends and if no ipx socket is still +# open. (default). +# +# 0x2 Switch on automatic kernel creation of ipx-interfaces. +# The automatic kernel creating of ipx-devices sometimes +# make trouble (Win95). It should only be used in the +# beginning or for testing !! +# +# 0x4 do remove ALL routes and ipx-devices +# beyond the lifetime of the server or router. +# If this flag is set then all ipx-devices/routes +# will be deleted when nwserv/nwrouted ends, +# without looking for open ipx sockets. +# This was the default prior mars_nwe 0.99.pl6 ! +# This also do complete ipx reinit when starting +# mars_nwe. +# This was the default prior mars_nwe 0.99.pl9 ! +# +# +# +# other flags may follow. +# value will be interpreted as hex value. + +5 0x0 + +# ========================================================================= +# Section 6: version-"spoofing" +# +# Some clients work better if the server tells that it is a 3.11 Server, +# although many calls (namespace services) of a real 3.11 Server are +# missing yet. +# ------------------------------------------------------------------------- +# Syntax: +# 6 SERVER_VERSION [FLAGS] +# +# SERVER_VERSION: the version-number reported to DOS-clients +# 0 Version 2.15 (was default till version 0.98.pl7) +# 1 Version 3.11 (is default now) +# 2 Version 3.12 +# +# If you want to use longfilenamesupport and/or namespace routines +# you should set this section to '1' or '2' +# And you should read doc/FAQS. +# +# FLAGS: some flags +# &1 enable burst mode connections. +# If you want to test Burst mode this flag must be set. +# and in config.h you must set ENABLE_BURSTMODE to 1. +# +# other flags may follow. +# value will be interpreted as hex value. +# ------------------------------------------------------------------------- +# +6 1 0x0 + + +# ========================================================================= +# Section 7: password handling of DOS-clients (required) +# +# When changing your "mars_nwe"-password from a DOS-client, this client +# (think of "LOGIN.EXE", "SYSCON.EXE" or "SETPASS.EXE") can encrypt your +# password before sending it to the "mars_nwe"-server (this improves +# security a little bit). +# In this section you can enforce encryption of user-passwords or allow +# not-encrypted sending of passwords over the net. +# +# +# On the Linux-side, passwords will only be stored in encrypted format. +# +# +# ------------------------------------------------------------------------- +# Syntax: +# 7 Value +# +# Value: +# 0 enforce encryption of _all_ passwords by the DOS-client +# (default) +# 1 as "0", but allow the non-encrypted version of the +# "change password"-routine. +# 7 allow all non-encrypted stuff but no empty nwe passwords. +# 8 allow all non-encrypted stuff and also allow empty +# nwe-passwords. +# 9 use all non-encryted calls + "get crypt key" will always fail +# so the login program will use the old unencryted calls. +# this will *not* work with all clients !! (OS2/client) +# ------------------------------------------------------------------------- + +7 0 + + +# Section 8: special login/logout/security and other flags. +# ========================================================================= +# Flags +# 0x1 allow changing dir/accessing other files than login/* +# when not logged in, if the client supports it. +# ( this was standard till mars_nwe-0.98.pl4 ) +# +# 0x2 switch on strange compatibility mode for opening files. +# If an opencall do an open for writing but +# the file is readonly then this call will not fail +# but open the file readonly. +# +# 0x4 allow the rename file call (NCP function 0x45) +# renaming of directories. +# normally the rename file call returns an error if this +# routine is used for renaming directories. +# +# 0x8 ignore station/time restrictions for supervisor. +# +# 0x10 allows deleting a file even if the file is opened by +# other process. +# ( this was standard before mars_nwe-0.99.pl0 ) +# +# 0x20 store file base entries for later use. +# Normally only directory base entries are stored. +# necessary if using ncpfs as mars_nwe client. +# +# 0x40 limit's volume's free space info to 2 GB. +# in some volume info calls. +# some DOS clients need it. +# +# 0x80 allows renaming a file even if the file is opened by +# other process. +# ( this was standard before mars_nwe-0.99.pl18 ) +# +# 0x100 not used yet. +# +# 0x200 needed for direct int17 printing on NETX clients +# (patch from Przemyslaw Czerpak) +# +# other flags may follow. +# value will be interpreted as hex value. + +8 0x0 + +# Section 9: Standard creat mode for creating directories and files. +# ========================================================================= +# +# mkdir mode (creat mode directories), creat mode files +# values are always interpreted as octal values ! +# if 0 is specified the standard umask will be used. +# if -1 is specified for directories the st_mode of parent directory +# will be used. +# Volumes depended values can be set in section 1. +# 9 -1 0640 +# +9 0751 0640 + +# Section 10: UID and GID with minimal rights +# ========================================================================= +# +# When loading the netware-drivers in the "autoexec.bat" of your +# DOS-client, you automatically "attach" to a netware-server. +# As a result, a new drive-letter is accessible under DOS, usally +# containing the programs "login.exe" and "slist.exe". +# Because you haven't logged in, nothing else of the netware-server +# will be visible to you. All actions requested from the DOS-client +# will be done with the following UID and GID on the Linux-side in this +# case. +# To achieve some level of security, the user/group asscociated with +# the UID and GID should only have _read_ rights on the files visible, +# _nothing_ else. +# +# On most Linux-systems, there is a user and group "nobody" defined in +# `/etc/passwd' and `/etc/group'. Use the number of that user/group +# for the following entries. +# +# ------------------------------------------------------------------------- +# Syntax: +# 10 GID +# 11 UID +# +# GID numeric number of the group +# UID numeric number of the user +# ------------------------------------------------------------------------- +# +# Example: +# 10 65534 +# 11 65534 + + 10 65534 + 11 65534 + + +# ========================================================================= +# Section 12: supervisor-login (required) +# +# The "supervisor" of a nw-server is much like "root" on the Linux-side. +# +# Specify a Linux-user that should be mapped to the supervisor of this +# mars_nwe-server. +# To improve security, don't use "root" for this purpose but create a +# seperate administrative account (under Linux) called "nw-adm" or similar. +# +# The nw-user defined in this section will have the mars_nwe internal UID +# "1" (remember even under Linux "root" must have the special UID "0"), so +# it is not possible to define a supervisor in section 13 (the users +# defined there will get random UIDs). +# You _can_ define a user with name "SUPERVISOR" in section 13, but he +# won't really be the "local god" on the "mars_nwe"-server. +# And of course you _can_ define a supervisor with name "GOD" or "ROOT" +# in _this_ section, which would only break the traditional naming-scheme +# of the netware-world. +# +# +# ------------------------------------------------------------------------- +# Syntax: +# 12 NW_LOGIN LINUX_LOGIN [PASSWORD] +# +# NW_LOGIN: the login-name for the "mars_nwe"-server (traditionally, +# this is "SUPERVISOR") +# LINUX_LOGIN: the account on the Linux-side associated with the NW_LOGIN +# PASSWORD: the password for the NW_LOGIN. It must be clear-text but +# will be encrypted and permanent stored in the +# bindery-files, so it (the password or the whole section, at +# your option) can be deleted after the first start of +# "nwserv". +# +# Make sure this file is not world-readable as long +# as the password stands here. +# +# If you leave this field blank when starting "mars_nwe" the +# first time, the supervisor-login will be completely +# disabled. In other words: there is no way to supply the +# supervisor with no password ("null-password"). +# ------------------------------------------------------------------------- +# +# Example: +# 12 SUPERVISOR nw-adm top-secret + +12 SUPERVISOR root + + +# ========================================================================= +# Section 13: user-logins (optional) +# +# You can provide mappings from the regular login-names of your Linux-Box +# to "mars_nwe"-logins here. +# Every "mars_nwe"-user _must_ have a login-name on the Linux side (even +# if he can't log in into the account associated with the login-name, +# because you locked it with a "*") in order to "own" files. +# If you specify a Linux-login that doesn't exist (one could think of a +# typo), the user will only have the minimal rights defined in +# sections 10/11. +# +# You may also map different mars_nwe user to the same unix user. +# +# See section 12 for a description of the syntax. +# +# Unlike in section 12, you can define users with no password. +# If you explizit want to set 'no password' here then use +# a '-' sign as password. +# ------------------------------------------------------------------------- +# Syntax: +# 13 NW_LOGIN [LINUX_LOGIN] [PASSWORD] [FLAGS] +# +# FLAGS must be a hex value begin with 0x +# the only FLAG value in the moment is 0x1 for 'fixed passwords' +# which cannot be changed by user. +# Example: +# 13 MARTIN +# 13 MARTIN martin +# 13 DAREK martin +# 13 COMMON common gast 0x1 # no password change by user. +# 13 COMMON common 0x1 # syntax is allowed too. + +13 GUEST nobody - 0x1 + +# Section 14: currently not used + +# ========================================================================= +# Section 15: automatic mapping of logins (decision required) +# +# If you have a large number of accounts on your Linux-machine, you may +# want to map all Linux-logins automatically to "mars_nwe"-logins. +# +# At this stage this section is only a quick hack to make life a bit +# easier for the administrator. +# +# WARNING: as there is no algorithm to convert the encrypted +# "Linux-passwords" into the encrypted format used by the DOS-clients (and +# therefore "mars_nwe"), you have to supply a common password for all +# automatically mapped users. This is a big security concern and you +# should never make this common password public (and, of course you +# should choose a sufficient "secure" (read: difficult) password). +# Type the common password to grant access to the users login and the +# command "setpass" instead of telling the password to the user. +# +# Only those Linux-logins will handled automatically that don't have a +# "x" or "*" as their encrypted password. +# +# +# ------------------------------------------------------------------------- +# Syntax: +# 15 FLAG DEFAULT_PASSWORD +# +# FLAG: +# 0 DON'T map the Linux-logins automatically to +# "mars_nwe"-logins (default) +# 1 YES, DO the automatic mapping and provide every login +# created this way with the common password given with +# "DEFAULT_PASSWORD" +# 99 re-read the logins from /etc/passwd and overwrite even the +# already existing logins from the bindery (this will also +# reset all the passwords to "DEFAULT_PASSWORD") +# +# DEFAULT_PASSWORD: the common password for all automatically created +# logins (only needed if FLAG is not "0"); everything about +# password in section 12 applies to this. +# ------------------------------------------------------------------------- + +15 0 top-secret + + +# ========================================================================= +# Section 16: Tests on startup +# +# If you want some sanity checks at startup, set this flag to > 0. +# "mars_nwe" will try to create/change missing directories: +# SYS:LOGIN, SYS:MAIL, SYS:MAIL/XXX, SYS:PUBLIC, SYS:SYSTEM ... +# (with the "right" permissions, of course) if you enable this. +# should also be enabled when you use a new mars_nwe version. +# Disabling this test only spares little time when starting mars_nwe. +# some values: +# 1 few important tests. +# 2 also check/compress bindery. + +16 1 + + +# Section 17: some bindery / user related flags. +# ========================================================================= +# Flags +# 0x1 give all user an empty! login script, if they do not +# already have one. Is interpreted by test routines +# which run if section 16 is set and nwserv starts +# or got a SIGHUP. ( nwserv -h ) +# +# other flags may follow. +# value will be interpreted as hex value. + +17 0x0 + +# Section 18: some queue handling related flags. +# ========================================================================= +# Flags +# 0x1 always unset (disable) the print banner flag. +# +# other flags may follow. +# value will be interpreted as hex value. +18 0x0 + +# Section 19-20: currently not used + + +# ========================================================================= +# Section 21: print queues (optional) +# +# Which of the printers connected to your Linux-box should be accessible +# from the DOS-clients? +# Multiple entries are allowed. +# +# ------------------------------------------------------------------------- +# Syntax: +# 21 QUEUE_NAME [QUEUE_DIR] [PRINT_COMMAND] +# +# QUEUE_NAME: the name of the print queue on client-side (to make it +# perfectly clear: _not_ the Linux-queue) +# QUEUE_DIR: spooling directory for the print-jobs. +# The name is the DOS (not Unix) name of this +# directory. +# It must be placed on the first defined volume. +# (standard name is SYS volume). +# Then it will be created at starttime of mars_nwe. +# It must exist before printing. +# (_not_ the spooling-directories of the Linux-lpd) +# NOTE ! +# A '-' sign as QUEUE_DIR has special meaning of +# 'standard' queuedir name. ( SYS:\SYSTEM\queueid.QDR ) +# +# PRINT_COMMAND: command used for serving the print-jobs under Linux +# (see "man lpr" and "man magicfilter" for details) +# if the '!' is last parameter of command then +# the queue-packet fields 'banner_user_name' +# and 'banner_file_name' will be added to the +# command as last parameters. +# NOTE ! +# If a print command is not specified the job can/must be +# printed by any print server. +# (e.g. pserver (ncpfs utils) or external printserver) +# +# Examples: +# 21 LASER - lpr -Plaser +# 21 OCTOPUSS +# 21 FAXPRINT - /usr/bin/psfaxprn /var/spool/fax/faxqueue +# ------------------------------------------------------------------------- +21 LP - lpr - +#21 LP_PS + + + +# ========================================================================= +# Section 22: print server entries (optional) +# adds printserver entries into bindery +# e.g. to enable printing with ncpfs pserver +# ------------------------------------------------------------------------- +# Syntax: +# 22 PSERVER_NAME QUEUE_NAME [FLAGS] +# +# FLAGS: +# 1 Let PSERVER_NAME be a 'normal' user (type 1). +# Used for simple qserver which works under 'normal' user login. +# +# Examples: +# 22 PS1 OCTOPUSS + +#22 PS_NWE LP_PS 1 + + +# ========================================================================= +# Section 30: Burst mode values (optional) +# +# ------------------------------------------------------------------------- +# Syntax: +# 30 MAX_BURST_READ_BUF MAX_BURST_WRITE_BUF +# default is 0x2000 0x2000 +# Examples: +# 30 0x2000 0x2000 + + +# ========================================================================= +# Section 31: not used yet +# ========================================================================= +# Flags not used yet +# + 31 0x0 + +# ========================================================================= +# Section 40ff: Some pathes (optional) +# +# ------------------------------------------------------------------------- +# 40 = path for vol/dev/inode->path cache, needed for client-32,namespace +40 /var/spool/nwserv/.volcache +# 41 = path for share/lock files +41 /var/spool/nwserv/.locks +# 42 = path for spool dir, e.g. internal print queue handling +42 /var/spool/nwserv +# +# +# 45 = path for bindery file's +45 /var/nwserv/db +# 46 = path for attribute handling +46 /var/nwserv/attrib +# 47 = path for trustee handling +47 /var/nwserv/trustees +# ========================================================================= +# Section 50: Conversion tables by Victor Khimenko +# Tables for DOS->Unix names translation & upper/lowercase translations +# For more information see doc/README.NLS +# some examples files exist in the examples directory. +# Conversation file must include 4 tables a 256 byte. +# 0 = dos2unix +# 1 = unix2dos +# 2 = down2up 'dosname' +# 3 = up2down 'dosname' +# ------------------------------------------------------------------------- +# Syntax: +# 50 Filename of conversation file. +# +# Examples: +# 50 /etc/nwserv.cnv + + +# Changing defaults from config.h +# more information in config.h +# 60 10 # MAX_CONNECTIONS +# 61 10 # MAX_NW_VOLS +# 63 50 # MAX_DIR_BASE_ENTRIES + +# 68 1 # USE_MMAP (use mmap=1, no mmap=0) +# 69 1 # HANDLE_ALL_SAP_TYPS (all sap typs=1, only typ 4=0) + +# 70 0x44444444 # NETWORK_SERIAL_NMBR (4 byte) +# 71 0x2222 # NETWORK_APPL_NMBR (2 byte) + + +# -------------------------------------------------------- +# You usally don't want to change anything below this line +# -------------------------------------------------------- + +# Sections 80-99: some more constants +# 80 50 # max_dir_search_handles (namspace.c) + +# Sections 100-106: amount of debug-information +# +# FLAG: +# 0 no debug messages +# 1 errors and notes are reported +# 99 maximum debug levels + +100 0 # debug IPX KERNEL (0 | 1) +101 1 # debug NWSERV +102 1 # debug NCPSERV +103 1 # debug NWCONN +104 0 # debug (start) NWCLIENT, should *always* be '0' ! +105 1 # debug NWBIND +106 1 # debug NWROUTED + +# Sections 200-202: logging of "nwserv" +# +200 1 # 0 = no logfile and dont daemonize nwserv/nwrouted + # 1 = daemonize nwserv/nwrouted and use logfile +201 /var/log/nw.log # filename of logfile +#201 syslog # if filename == syslog then syslogd will be used for + # all messages + +202 0x1 # flag in hex notation + # 0x0=append all messages to logfile. + # & 0x1=creat new logfile instead of appending. +#202 0x3 # & 0x2=use syslogd for error messages instead of logfile. + + + + +# Sections 210,211: timing + +210 10 # 1 .. 600 (default 10) seconds after server + # really goes down after a down command +211 60 # 10 .. 600 (default 60) broadcasts every x seconds + + +# Sections 300-302: loging of routing-information + +300 1 # > 0 print routing info to file every x broadcasts. + # ( normally minutes ) +301 /var/log/nw.routes # filename of logfile + +302 0x1 # flags will be interpreted as hex value. + # 0 = append to this file + # & 0x1 = creat new routing info file + # & 0x2 = split info into several files + # (extensions = .1, .2, .3 ... ) + +# Section 310: watchdogs + +310 7 # send wdog's only to device net < x ticks. + # 0 = always send wdogs. < 0 = never send wdogs + +# Section 400: +# station file for special handling of stations. + +400 /etc/nwserv.stations # for syntax see file in the examples directory. + + +# Section 401: nearest server +# +# for special handling of the 'get nearest server request'. +401 0 # 0 = ignore entry 400, get nearest response always enabled. + # 1 = 400 are excludes, get nearest response normally enabled. + # 2 = 400 are includes, get nearest response normally disabled. + +# Section 402: station connect restrictions +# +# for special handling of the 'creat connection' (attach) call. +402 0 # 0 = ignore entry 400, create connection always enabled. + # 1 = 400 are excludes, create connection normally enabled. + # 2 = 400 are includes, create connection normally disabled. + diff --git a/nwbind.c b/nwbind.c index 1549cb1..e08a266 100644 --- a/nwbind.c +++ b/nwbind.c @@ -1,5 +1,7 @@ /* nwbind.c */ -#define REVISION_DATE "14-Aug-00" + +#define REVISION_DATE "14-Jun-03" // (M@K) + /* NCP Bindery SUB-SERVER */ /* authentification and some message and queue handling */ @@ -25,6 +27,7 @@ * mst:25-Apr-00: added login control routines from Paolo Prandini * mst:25-Apr-00: added simple example for getting nwconn data * mst:14-Aug-00: added patch from Poalo Prandini + * mck:14-Jun-2003: added patch from Marco Cavallini (M@K) * */ @@ -53,6 +56,10 @@ static ipxAddr_t from_addr; /* actual calling address */ static NCPREQUEST *ncprequest = (NCPREQUEST*)&ipx_in_data; static int server_goes_down=0; + +static void nwconn_callback(int connection, char *data, int data_len, int completition) ; + + static void write_to_nwserv(int what, int connection, int mode, char *data, int size) { @@ -512,9 +519,10 @@ static void handle_fxx(int gelen, int func) rdata = requestdata+3; } - MDEBUG(D_BIND_REQ, { +// MDEBUG(D_BIND_REQ, + { int j = gelen - sizeof(NCPREQUEST); - XDPRINTF((1, 0, "NCP 0x%x REQUEST:ufunc:0x%x", func, ufunc)); + XDPRINTF((1, 0, "KNCP 0x%x REQUEST:ufunc:0x%x", func, ufunc)); if (j > 0){ uint8 *p=requestdata; XDPRINTF((1, 2, "len %d, DATA:", j)); @@ -525,7 +533,8 @@ static void handle_fxx(int gelen, int func) } XDPRINTF((1, 1, NULL)); } - }) + } +// ) if (0x15 == func) { switch (ufunc) { /* Messages */ @@ -1731,19 +1740,21 @@ static void handle_fxx(int gelen, int func) case 0xc8 : { /* CHECK CONSOLE PRIVILEGES */ /* to use fileserver service functions */ - XDPRINTF((1, 0, "MAKE BETTER: CHECK CONSOLE PRIV")); + XDPRINTF((1, 0, "MAKE BETTER: CHECK CONSOLE PRIV (M@K)")); /* !!!!!! TODO completition=0xc6 (no rights) */ if (!(act_c->id_flags&1)) - completition=0xc6; /* no rights */ + completition=0; /* no rights (M@K) */ +// completition=0xc6; /* no rights */ } break; case 0xc9 : { /* GET FILE SERVER DESCRIPTION STRINGs */ - char *company = "Mars :-)"; - char *revision = "Version %d.%d.pl%d"; + char *company = "KoanSoftware.com"; + char *revision = "Version %d.%d.pl%d [KOAN]"; // (M@K) char *revision_date = REVISION_DATE; - char *copyright = "(C)opyright Martin Stover"; + char *copyright = "(C)M.Stover"; int k=strlen(company)+1; int l; + memset(responsedata, 0, 512); strcpy(responsedata, company); l = 1 + sprintf(responsedata+k, revision, @@ -1793,6 +1804,25 @@ static void handle_fxx(int gelen, int func) } break; + case 0xd2 : { /* Clear Connection Number (M@K) */ + /* 14-Jun-2003 by Marco Cavallini */ + uint8 conxnumber = *rdata - 1 ; // pointer to NCPREQUEST structure (receive aligned to 1 and we must align to 0) + char buf[255] ; + CONNECTION *cn=&connections[conxnumber]; + + sprintf(buf, "(M@K) Clear Connection Number = %d <==========", conxnumber); + XDPRINTF((1, 0, buf)); + if (cn->active) { + strmaxcpy(cn->message, "MARS_NWE has killed your connection", 58); + sprintf(buf, "(M@K) KILL = Conn=%d PID=%d", conxnumber, cn->pid_nwconn); + XDPRINTF((1, 0, buf)); + nwserv_handle_msg(conxnumber+1); // send message to the client + if (cn->pid_nwconn > -1) + kill(cn->pid_nwconn, SIGTERM); // kill it using brute force (M@K) + } + + } break; + case 0xd3 : { /* down File Server */ internal_act=1; if (HAVE_SU_RIGHTS(act_c->object_id)) { /* only SUPERVISOR */ diff --git a/nwserv.c b/nwserv.c index 5480b94..064a499 100644 --- a/nwserv.c +++ b/nwserv.c @@ -1238,6 +1238,9 @@ static int server_is_down=0; static int usage(char *prog) { + fprintf(stderr, "============== mars_nwe by Koan ===============\n\n") ; // (M@) + + #if IN_NWROUTED || INTERNAL_RIP_SAP fprintf(stderr, "usage:\t%s [-V|-h|-f|-u|-k[q]|y]\n", prog); fprintf(stderr, "or:\t%s -a device frame netnum\n", prog); @@ -1327,7 +1330,7 @@ int main(int argc, char **argv) case 'f' : init_mode = 5; break; case 'q' : if (init_mode == 2) init_mode=4; break; case 'v' : - case 'V' : fprintf(stderr, "\n%s:Version %d.%d.pl%d\n", + case 'V' : fprintf(stderr, "\n%s:Version %d.%d.pl%d [ KOAN ]\n", argv[0], _VERS_H_, _VERS_L_, _VERS_P_ ); return(0); default : return(usage(argv[0]));