which included commits to RCS files with non-trunk default branches.
-Openafs News -- history of user Visible changes. September 17, 2001
+OpenAFS News -- history of user-visible changes. October 13, 2001
+
+* Changes incorporated in OpenAFS 1.2.2
+
+** Solaris 9 and Linux PA-RISC are now supported
+
+** fileserver will not erroneously delay legitimate errors for 3 seconds
+ after 10 errors are returned (e.g. stat() on a directory you can't read)
+
+** Rx MTU calculation now works for Irix, Solaris and Linux
+
+** If afsd is started with the -dynroot flag, /afs will be locally
+ generated from the CellServDB. AFSDB cells will be mounted
+ automatically upon access.
+
+** The namei fileserver allows vice "partitions" to be directories instead
+ of partitions and will attach and display accordingly. Creating the file
+ "AlwaysAttach" in the /vicepX directory is used as the trigger to attach it.
+
+** TSM support for butc no longer requires editing a Makefile, simply
+ specify the --enable-tivoli-tsm configure option.
+
+** Linux builds no longer require source changes every time the kernel
+ inode structure changes; the OpenAFS sources will now configure
+ itself to the actual inode structure as defined in the kernel
+ sources.
+
+* Changes incorporated in OpenAFS 1.2.1
+
+** vfsck on Digital UNIX and Solaris will now refuse to fsck mounted
+ mounted partitions.
* Changes incorporated in OpenAFS 1.2.0
and /usr/vice/etc) use the --enable-transarc-paths option to
configure. More details on the new directory layout are found in README.
-
* Changes incorporated in OpenAFS 1.1.1a
** Windows 95/98/ME/NT/2000 - Consistent versioning
sun4x_56
sun4x_57
sun4x_58
+ sun4x_59
ppc_darwin_13
ppc_linux22
ppc_linux24
#undef FULL_LISTVOL_SWITCH
#undef INODE_SETATTR_NOT_VOID
-#undef STRUCT_INODE_HAS_I_BYTES
-#undef STRUCT_INODE_HAS_I_CDEV
-#undef STRUCT_INODE_HAS_I_TRUNCATE_SEM
-#undef STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
-#undef STRUCT_INODE_HAS_I_MAPPING_OVERLOAD
-#undef STRUCT_INODE_HAS_I_MMAP_SHARED
#undef STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
/* glue for RedHat kernel bug */
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
-timestamp='2001-03-30'
+timestamp='2001-10-05'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
-# Please send patches to <config-patches@gnu.org>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
+ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
os=-vxworks
basic_machine=$1
;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
-hiux*)
os=-hiuxwe2
;;
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
- | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
- | pyramid | mn10200 | mn10300 | tron | a29k \
- | 580 | i960 | h8300 \
- | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
- | hppa64 \
- | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
- | alphaev6[78] \
- | we32k | ns16k | clipper | i370 | sh | sh[34] \
- | powerpc | powerpcle \
- | 1750a | dsp16xx | pdp10 | pdp11 \
- | mips16 | mips64 | mipsel | mips64el \
- | mips64orion | mips64orionel | mipstx39 | mipstx39el \
- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
- | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
- | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
- | pj | pjl | h8500)
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | c4x | clipper \
+ | d10v | d30v | dsp16xx \
+ | fr30 \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | m32r | m68000 | m68k | m88k | mcore \
+ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el | mips64vr4300 \
+ | mips64vr4300el | mips64vr5000 | mips64vr5000el \
+ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
+ | mipsisa32 \
+ | mn10200 | mn10300 \
+ | ns16k | ns32k \
+ | openrisc \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | s390 | s390x \
+ | sh | sh[34] | sh[34]eb | shbe | shle \
+ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \
+ | stormy16 | strongarm \
+ | tahoe | thumb | tic80 | tron \
+ | v850 \
+ | we32k \
+ | x86 | xscale \
+ | z8k)
basic_machine=$basic_machine-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12)
basic_machine=$basic_machine-unknown
os=-none
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
- i[234567]86 | x86_64)
+ i*86 | x86_64)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
exit 1
;;
# Recognize the basic CPU types with company name.
- # FIXME: clean up the formatting here.
- vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
- | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
- | xmp-* | ymp-* \
- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
- | hppa2.0n-* | hppa64-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
- | alphaev6[78]-* \
- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
- | clipper-* | orion-* \
- | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
- | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
- | mipstx39-* | mipstx39el-* | mcore-* \
- | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
- | [cjt]90-* \
- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
- | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
- | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alphapca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armv*-* \
+ | avr-* \
+ | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c54x-* \
+ | clipper-* | cray2-* | cydra-* \
+ | d10v-* | d30v-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fr30-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | m32r-* \
+ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | mcore-* \
+ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
+ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
+ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | s390-* | s390x-* \
+ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \
+ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \
+ | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \
+ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+ | v850-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \
+ | ymp-* \
+ | z8k-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
basic_machine=i370-ibm
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i[34567]86v32)
+ i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
- i[34567]86v4*)
+ i*86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
- i[34567]86v)
+ i*86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
- i[34567]86sol2)
+ i*86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
- pentium | p5 | k5 | k6 | nexgen)
+ pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
pentiumpro | p6 | 6x86 | athlon)
pentiumii | pentium2)
basic_machine=i686-pc
;;
- pentium-* | p5-* | k5-* | k6-* | nexgen-*)
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
ps2)
basic_machine=i386-ibm
;;
basic_machine=sh-hitachi
os=-hms
;;
- sparclite-wrs)
+ sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
;;
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ windows32)
+ basic_machine=i386-pc
+ os=-windows32-msvcrt
+ ;;
xmp)
basic_machine=xmp-cray
os=-unicos
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4)
+ sh3 | sh4 | sh3eb | sh4eb)
basic_machine=sh-unknown
;;
- sparc | sparcv9)
+ sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
cydra)
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
- | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
case $basic_machine in
- x86-* | i[34567]86-*)
+ x86-* | i*86-*)
;;
*)
os=-nto$os
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
vendor=atari
;;
+ -vos*)
+ vendor=stratus
+ ;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
AC_INIT(Makefile.common)
-AM_INIT_AUTOMAKE(openafs-libafs,1.2.1)
-AC_CANONICAL_HOST
+AM_INIT_AUTOMAKE(openafs-libafs,1.2.2)
AC_CONFIG_HEADER(config/afsconfig.h)
+define(OPENAFS_CONFIGURE_LIBAFS)
-#BOZO_SAVE_CORES BOS_RESTRICTED_MODE BOS_NEW_CONFIG pam sia
-AC_ARG_WITH(afs-sysname,
-[ --with-afs-sysname=sys use sys for the afs sysname]
-)
-AC_ARG_ENABLE( obsolete,
-[ --enable-obsolete enable obsolete portions of AFS (mpp, ntp and package)],, enable_obsolete="no")
-AC_ARG_ENABLE( insecure,
-[ --enable-insecure enable insecure portions of AFS (ftpd, inetd, rcp, rlogind and rsh)],, enable_insecure="no")
-AC_ARG_ENABLE( afsdb,
-[ --disable-afsdb disable AFSDB RR support],, enable_afsdb="yes")
-AC_ARG_ENABLE( bos-restricted-mode,
-[ --enable-bos-restricted-mode enable bosserver restricted mode which disables certain bosserver functionality],, enable_bos_restricted_mode="no")
-AC_ARG_ENABLE( namei-fileserver,
-[ --enable-namei-fileserver force compilation of namei fileserver in preference to inode fileserver],, enable_namei_fileserver="no")
-AC_ARG_ENABLE( fast-restart,
-[ --enable-fast-restart enable fast startup of file server without salvaging],, enable_fast_restart="no")
-AC_ARG_ENABLE( bitmap-later,
-[ --enable-bitmap-later enable fast startup of file server by not reading bitmap till needed],, enable_bitmap_later="no")
-AC_ARG_ENABLE( full-vos-listvol-switch,
-[ --enable-full-vos-listvol-switch enable vos full listvol switch for formatted output],, enable_full_vos_listvol_switch="no")
-AC_ARG_WITH(dux-kernel-headers,
-[ --with-dux-kernel-headers=path use the kernel headers found at path(optional, defaults to first match in /usr/sys)]
-)
-AC_ARG_WITH(linux-kernel-headers,
-[ --with-linux-kernel-headers=path use the kernel headers found at path(optional, defaults to /usr/src/linux)]
-)
-AC_ARG_ENABLE(kernel-module,
-[ --disable-kernel-module disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
-)
-AC_ARG_ENABLE(redhat-buildsys,
-[ --enable-redhat-buildsys enable compilation of the redhat build system kernel (defaults to disabled)],, enable_redhat_buildsys="no"
-)
-AC_ARG_ENABLE(transarc-paths,
-[ --enable-transarc-paths Use Transarc style paths like /usr/afs and /usr/vice],, enable_transarc_paths="no"
-)
-
-AC_PROG_CC
-
-dnl weird ass systems
-AC_AIX
-AC_ISC_POSIX
-AC_MINIX
-
-dnl Various compiler setup.
-AC_C_INLINE
-AC_C_CONST
-AC_TYPE_PID_T
-AC_TYPE_SIZE_T
-AC_TYPE_SIGNAL
-
-dnl Checks for programs.
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_RANLIB
-AC_PROG_YACC
-AM_PROG_LEX
-
-OPENAFS_CHECK_BIGENDIAN
-
-AC_MSG_CHECKING(your OS)
-system=$host
-case $system in
- *-linux*)
- MKAFS_OSTYPE=LINUX
- if test "x$enable_redhat_buildsys" = "xyes"; then
- AC_DEFINE(ENABLE_REDHAT_BUILDSYS)
- fi
- if test "x$enable_kernel_module" = "xyes"; then
- if test "x$with_linux_kernel_headers" != "x"; then
- LINUX_KERNEL_PATH="$with_linux_kernel_headers"
- else
- LINUX_KERNEL_PATH="/usr/src/linux"
- fi
- if test -f "$LINUX_KERNEL_PATH/include/linux/version.h"; then
- linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version.h |awk 'BEGIN { FS="\"" } { print $2 }'|tail -1`
- if test "x$linux_kvers" = "x"; then
- if test -f "$LINUX_KERNEL_PATH/include/linux/version-up.h"; then
- linux_kvers=`fgrep UTS_RELEASE $LINUX_KERNEL_PATH/include/linux/version-up.h |awk 'BEGIN { FS="\"" } { print $2 }'|tail -1`
- if test "x$linux_kvers" = "x"; then
-
- AC_MSG_ERROR(Linux headers lack version definition [2])
- exit 1
- else
- LINUX_VERSION="$linux_kvers"
- fi
- else
- AC_MSG_ERROR(Linux headers lack version definition)
- exit 1
- fi
- else
- LINUX_VERSION="$linux_kvers"
- fi
- else
- enable_kernel_module="no"
- fi
- if test ! -f "$LINUX_KERNEL_PATH/include/linux/autoconf.h"; then
- enable_kernel_module="no"
- fi
- if test "x$enable_kernel_module" = "xno"; then
- if test "x$with_linux_kernel_headers" != "x"; then
- AC_MSG_ERROR(No usable linux headers found at $LINUX_KERNEL_PATH)
- exit 1
- else
- AC_MSG_WARN(No usable linux headers found at $LINUX_KERNEL_PATH so disabling kernel module)
- fi
- fi
- fi
- AC_MSG_RESULT(linux)
- if test "x$enable_kernel_module" = "xyes"; then
- LINUX_FS_STRUCT_INODE_HAS_I_BYTES
- LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
- LINUX_FS_STRUCT_INODE_HAS_I_CDEV
- LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM
- LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS
- LINUX_FS_STRUCT_INODE_HAS_I_MAPPING_OVERLOAD
- LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED
- LINUX_INODE_SETATTR_RETURN_TYPE
- LINUX_NEED_RHCONFIG
- LINUX_WHICH_MODULES
- if test "x$ac_cv_linux_func_inode_setattr_returns_int" = "xyes" ; then
- AC_DEFINE(INODE_SETATTR_NOT_VOID)
- fi
- if test "x$ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers" = "xyes"; then
- AC_DEFINE(STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS)
- fi
- if test "x$ac_cv_linux_fs_struct_inode_has_i_mmap_shared" = "xyes"; then
- AC_DEFINE(STRUCT_INODE_HAS_I_MMAP_SHARED)
- fi
- if test "x$ac_cv_linux_fs_struct_inode_has_i_mapping_overload" = "xyes"; then
- AC_DEFINE(STRUCT_INODE_HAS_I_MAPPING_OVERLOAD)
- fi
- if test "x$ac_cv_linux_fs_struct_inode_has_i_cdev" = "xyes"; then
- AC_DEFINE(STRUCT_INODE_HAS_I_CDEV)
- fi
- if test "x$ac_cv_linux_fs_struct_inode_has_i_truncate_sem" = "xyes"; then
- AC_DEFINE(STRUCT_INODE_HAS_I_TRUNCATE_SEM)
- fi
- if test "x$ac_cv_linux_fs_struct_inode_has_i_bytes" = "xyes"; then
- AC_DEFINE(STRUCT_INODE_HAS_I_BYTES)
- fi
- if test "x$ac_cv_linux_fs_struct_address_space_has_page_lock" = "xyes"; then
- AC_DEFINE(STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK)
- fi
- :
- fi
- ;;
- *-solaris*)
- MKAFS_OSTYPE=SOLARIS
- AC_MSG_RESULT(sun4)
- SOLARIS_UFSVFS_HAS_DQRWLOCK
- ;;
- *-hpux*)
- MKAFS_OSTYPE=HPUX
- AC_MSG_RESULT(hp_ux)
- ;;
- *-irix*)
- MKAFS_OSTYPE=IRIX
- AC_MSG_RESULT(sgi)
- ;;
- *-aix*)
- MKAFS_OSTYPE=AIX
- AC_MSG_RESULT(rs_aix)
- ;;
- *-osf*)
- MKAFS_OSTYPE=DUX
- AC_MSG_RESULT(alpha_dux)
- if test "x$enable_kernel_module" = "xyes"; then
- if test "x$with_dux_kernel_headers" != "x"; then
- HEADER_RT=`ls ${with_dux_kernel_headers}/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
- else
- HEADER_RT=`ls /usr/sys/*/rt_preempt.h | head -1 | sed 's,/rt_preempt.h,,;s,/usr/sys/,,'`
- fi
- fi
- if test "$HEADER_RT" = "*" ; then
- AC_MSG_ERROR([Need a configured kernel directory])
- fi
- AC_SUBST([HEADER_RT])
- ;;
- *-darwin*)
- MKAFS_OSTYPE=DARWIN
- AC_MSG_RESULT(ppc_darwin)
- ;;
- *-freebsd*)
- MKAFS_OSTYPE=FBSD
- AC_MSG_RESULT(i386_fbsd)
- ;;
- *-openbsd*)
- MKAFS_OSTYPE=OBSD
- AC_MSG_RESULT(i386_obsd)
- ;;
- *)
- AC_MSG_RESULT($system)
- ;;
-esac
-
-if test "x$with_afs_sysname" != "x"; then
- AFS_SYSNAME="$with_afs_sysname"
-else
- AC_MSG_CHECKING(your AFS sysname)
- case $host in
- i?86-*-freebsd4.2*)
- AFS_SYSNAME="i386_fbsd_42"
- ;;
- hppa*-hp-hpux11*)
- AFS_SYSNAME="hp_ux110"
- ;;
- hppa*-hp-hpux10*)
- AFS_SYSNAME="hp_ux102"
- ;;
- powerpc-apple-darwin1.2*)
- AFS_SYSNAME="ppc_darwin_12"
- DARWIN_PLIST=afs.${AFS_SYSNAME}.plist
- DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
- ;;
- powerpc-apple-darwin1.3*)
- AFS_SYSNAME="ppc_darwin_13"
- DARWIN_PLIST=afs.${AFS_SYSNAME}.plist
- DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
- ;;
- powerpc-apple-darwin1.4*)
- AFS_SYSNAME="ppc_darwin_14"
- DARWIN_PLIST=afs.${AFS_SYSNAME}.plist
- DARWIN_INFOFILE=afs.${AFS_SYSNAME}.plist
- ;;
- sparc-sun-solaris2.5*)
- AFS_SYSNAME="sun4x_55"
- ;;
- sparc-sun-solaris2.6)
- AFS_SYSNAME="sun4x_56"
- ;;
- sparc-sun-solaris2.7)
- AFS_SYSNAME="sun4x_57"
- ;;
- sparc-sun-solaris2.8)
- AFS_SYSNAME="sun4x_58"
- ;;
- alpha*-dec-osf4.0*)
- AFS_SYSNAME="alpha_dux40"
- ;;
- alpha*-dec-osf5.0*)
- AFS_SYSNAME="alpha_dux50"
- ;;
- mips-sgi-irix6.5)
- AFS_SYSNAME="sgi_65"
- ;;
- ia64-*-linux*)
- AFS_SYSNAME="ia64_linuxXX"
- ;;
- powerpc-*-linux*)
- AFS_SYSNAME="ppc_linuxXX"
- ;;
- alpha*-linux*)
- AFS_SYSNAME="alpha_linux_XX"
- ;;
- s390-*-linux*)
- AFS_SYSNAME="s390_linuxXX"
- ;;
- sparc-*-linux*)
- AFS_SYSNAME="sparc_linuxXX"
- ;;
- sparc64-*-linux*)
- AFS_SYSNAME="sparc64_linuxXX"
- ;;
- i?86-*-linux*)
- AFS_SYSNAME="i386_linuxXX"
- ;;
- power*-ibm-aix4.2*)
- AFS_SYSNAME="rs_aix42"
- ;;
- power*-ibm-aix4.3*)
- AFS_SYSNAME="rs_aix42"
- ;;
- *)
- AC_MSG_ERROR(An AFS sysname is required)
- exit 1
- ;;
- esac
- case $AFS_SYSNAME in
- *_linux*)
- AFS_SYSKVERS=`echo $LINUX_VERSION | awk -F\. '{print $1 $2}'`
- if test "x${AFS_SYSKVERS}" = "x"; then
- AC_MSG_ERROR(Couldn't guess your Linux version. Please use the --with-afs-sysname option to configure an AFS sysname.)
- fi
- _AFS_SYSNAME=`echo $AFS_SYSNAME|sed s/XX\$/$AFS_SYSKVERS/`
- AFS_SYSNAME="$_AFS_SYSNAME"
- ;;
- esac
- AC_MSG_RESULT($AFS_SYSNAME)
-fi
-
-
-if test "x${MKAFS_OSTYPE}" = "xIRIX"; then
- echo Skipping library tests because they confuse Irix.
-else
- AC_CHECK_FUNCS(socket)
-
- if test "$ac_cv_func_socket" = no; then
- for lib in socket inet; do
- if test "$HAVE_SOCKET" != 1; then
- AC_CHECK_LIB(${lib}, socket,LIBS="$LIBS -l$lib";HAVE_SOCKET=1;AC_DEFINE(HAVE_SOCKET))
- fi
- done
- fi
-
- AC_CHECK_FUNCS(connect)
-
- if test "$ac_cv_func_connect" = no; then
- for lib in nsl; do
- if test "$HAVE_CONNECT" != 1; then
- AC_CHECK_LIB(${lib}, connect,LIBS="$LIBS -l$lib";HAVE_CONNECT=1;AC_DEFINE(HAVE_CONNECT))
- fi
- done
- fi
-
- AC_CHECK_FUNCS(gethostbyname)
- if test "$ac_cv_func_gethostbyname" = no; then
- for lib in dns nsl resolv; do
- if test "$HAVE_GETHOSTBYNAME" != 1; then
- AC_CHECK_LIB(${lib}, gethostbyname, LIBS="$LIBS -l$lib";HAVE_GETHOSTBYNAME=1;AC_DEFINE(HAVE_GETHOSTBYNAME))
- fi
- done
- fi
-
- AC_CHECK_FUNCS(res_search)
- if test "$ac_cv_func_res_search" = no; then
- for lib in dns nsl resolv; do
- if test "$HAVE_RES_SEARCH" != 1; then
- AC_CHECK_LIB(${lib}, res_search, LIBS="$LIBS -l$lib";HAVE_RES_SEARCH=1;AC_DEFINE(HAVE_RES_SEARCH))
- fi
- done
- if test "$HAVE_RES_SEARCH" = 1; then
- LIB_res_search="-l$lib"
- fi
- fi
-fi
-
-PTHREAD_LIBS=error
-AC_CHECK_LIB(pthread, pthread_attr_init,
- PTHREAD_LIBS="-lpthread")
-if test "x$PTHREAD_LIBS" = xerror; then
- AC_CHECK_LIB(pthreads, pthread_attr_init,
- PTHREAD_LIBS="-lpthreads")
-fi
-if test "x$PTHREAD_LIBS" = xerror; then
- AC_CHECK_LIB(c_r, pthread_attr_init,
- PTHREAD_LIBS="-lc_r")
-fi
-if test "x$PTHREAD_LIBS" = xerror; then
- AC_CHECK_FUNC(pthread_attr_init, PTHREAD_LIBS="")
-fi
-if test "x$PTHREAD_LIBS" = xerror; then
- AC_MSG_WARN(*** Unable to locate working posix thread library ***)
-fi
-AC_SUBST(PTHREAD_LIBS)
-
-WITH_OBSOLETE=NO
-if test "$enable_obsolete" = "yes"; then
- WITH_OBSOLETE=YES
-fi
-
-WITH_INSECURE=NO
-if test "$enable_insecure" = "yes"; then
- WITH_INSECURE=YES
-fi
-
-# Fast restart
-if test "$enable_fast_restart" = "yes"; then
- AC_DEFINE(FAST_RESTART)
-fi
-
-if test "$enable_bitmap_later" = "yes"; then
- AC_DEFINE(BITMAP_LATER)
-fi
-
-if test "$enable_full_vos_listvol_switch" = "yes"; then
- AC_DEFINE(FULL_LISTVOL_SWITCH)
-fi
-
-if test "$enable_bos_restricted_mode" = "yes"; then
- AC_DEFINE(BOS_RESTRICTED_MODE)
-fi
-
-if test "$enable_namei_fileserver" = "yes"; then
- AC_DEFINE(AFS_NAMEI_ENV)
-fi
-
-if test "$enable_afsdb" = "yes"; then
- LIB_AFSDB="$LIB_res_search"
- AC_DEFINE(AFS_AFSDB_ENV)
-fi
+OPENAFS_CONFIGURE_COMMON
-SRCDIR_PARENT=`pwd`
TOP_SRCDIR="${SRCDIR_PARENT}"
-DESTDIR="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest/"
TOP_INCDIR="${SRCDIR_PARENT}/include"
TOP_LIBDIR="${SRCDIR_PARENT}/lib"
-
-dnl checks for header files.
-AC_HEADER_STDC
-AC_HEADER_SYS_WAIT
-AC_HEADER_DIRENT
-AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
-AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
-AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h)
-AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
-AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h)
-AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h)
-
-AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf re_comp re_exec)
-
-dnl Directory PATH handling
-if test "x$enable_transarc_paths" = "xyes" ; then
- afsconfdir=${afsconfdir=/usr/afs/etc}
- viceetcdir=${viceetcdir=/usr/vice/etc}
- afskerneldir=${afskerneldir=${viceetcdir}}
- afssrvbindir=${afssrvbindir=/usr/afs/bin}
- afssrvsbindir=${afssrvsbindir=/usr/afs/bin}
- afssrvlibexecdir=${afssrvlibexecdir=/usr/afs/bin}
- afsdbdir=${afsdbdir=/usr/afs/db}
- afslogsdir=${afslogsdir=/usr/afs/logs}
- afslocaldir=${afslocaldir=/usr/afs/local}
- afsbackupdir=${afsbackupdir=/usr/afs/backup}
- afsbosconfigdir=${afsbosconfigdir=/usr/afs/local}
- else
- afsconfdir=${afsconfdir=$sysconfdir/openafs/server}
- viceetcdir=${viceetcdir=$sysconfdir/openafs}
- afskerneldir=${afskerneldir=$libdir/openafs}
- afssrvbindir=${afssrvbindir=$bindir}
- afssrvsbindir=${afssrvsbindir=$sbindir}
- afssrvlibexecdir=${afssrvlibexecdir=$libexecdir/openafs}
- afsdbdir=${afsdbdir=$localstatedir/openafs/db}
- afslogsdir=${afslogsdir=$localstatedir/openafs/logs}
- afslocaldir=${afslocaldir=$localstatedir/openafs}
- afsbackupdir=${afsbackupdir=$localstatedir/openafs/backup}
- afsbosconfigdir=${afsbosconfigdir=$sysconfdir/openafs}
-
+if test "${DEST}x" = "x"; then
+ DEST="${SRCDIR_PARENT}/${AFS_SYSNAME}/dest"
fi
-AC_SUBST(afsconfdir)
-AC_SUBST(viceetcdir)
-AC_SUBST(afskerneldir)
-AC_SUBST(afssrvbindir)
-AC_SUBST(afssrvsbindir)
-AC_SUBST(afssrvlibexecdir)
-AC_SUBST(afsdbdir)
-AC_SUBST(afslogsdir)
-AC_SUBST(afslocaldir)
-AC_SUBST(afsbackupdir)
-AC_SUBST(afsbosconfigdir)
-if test "x$enable_kernel_module" = "xyes"; then
-ENABLE_KERNEL_MODULE=libafs
+# Check for files involved in porting. Report errors, don't make the
+# user hunt through the configure log after the build fails!
+if test ! -r config/Makefile.${AFS_SYSNAME}.in ; then
+ AC_MSG_ERROR(no source file config/Makefile.${AFS_SYSNAME}.in)
fi
-AC_SUBST(AFS_SYSNAME)
-AC_SUBST(ENABLE_KERNEL_MODULE)
-AC_SUBST(LIB_AFSDB)
-AC_SUBST(LINUX_KERNEL_PATH)
-AC_SUBST(LINUX_VERSION)
-AC_SUBST(MKAFS_OSTYPE)
-AC_SUBST(TOP_SRCDIR)
-AC_SUBST(TOP_INCDIR)
-AC_SUBST(TOP_LIBDIR)
-AC_SUBST(DEST)
-AC_SUBST(WITH_OBSOLETE)
-AC_SUBST(WITH_INSECURE)
-AC_SUBST(DARWIN_INFOFILE)
-
AC_OUTPUT( \
Makefile \
config/Makefile.${AFS_SYSNAME} \
OBJ = $(SYS_NAME)/obj
DEST = $(SYS_NAME)/dest
+DESTDIR = DEST/
+SRCDIR = ${DESTDIR}
#LINUX_SYS = i386_linux22
+TOP_SRCDIR = `pwd`/src
all: afsd
$(NTMAKE)
$(CD) ..\..
-auth: sys
+afsdobjs: sys
+ echo ***** $@
+ $(CD) $(OBJ)\WINNT\afsd
+ $(NTMAKE_OBJS)
+ $(CD) ..\..\..
+
+auth: afsdobjs
echo ***** $@
$(CD) $(OBJ)\$@
$(NTMAKE)
NTMAKE = nmake /nologo /f ntmakefile install
NTMAKELANG = nmake /nologo /f ntmakefile en_US
NTMAKE_HEADERS = nmake /nologo /f ntmakefile install_headers
+NTMAKE_OBJS = nmake /nologo /f ntmakefile install_objs
MKDIR = mkdir
OBJ = src
$(NTMAKE)
$(CD) ..\..
-auth: sys
+afsdobjs: sys
+ echo ***** $@
+ $(CD) $(OBJ)\WINNT\afsd
+ $(NTMAKE_OBJS)
+ $(CD) ..\..\..
+
+auth: afsdobjs
echo ***** $@
$(CD) $(OBJ)\$@
$(NTMAKE)
cm_dcache.c cm_dir.c cm_dnlc.c cm_ioctl.c cm_scache.c \
cm_server.c cm_user.c cm_utils.c cm_vnodeops.c cm_volume.c \
dosutils95.c largeint95.c netbios95.c smb.c smb_ioctl.c \
- cm_diskcache95.c queue95.c afsmsg95.c smb3.c
+ cm_diskcache95.c queue95.c afsmsg95.c smb3.c cm_dns.c \
+ cm_freelance.c
include ../../config/Makefile.djgpp.common
install : $(DESTBIN)/afsd.exe #$(DESTBIN)/klog.exe
#CFLAGS += -I../vxd_lib
#CFLAGS += -DAFS_VXD
-CFLAGS += -DDOS_PKT_WHOLE
+CFLAGS += -DDOS_PKT_WHOLE -DAFS_AFSDB_ENV -DAFS_FREELANCE_CLIENT
INCFILES = \
$(DESTINC)/netbios95.h \
$(INCFILEDIR)\smb_iocons.h \
$(INCFILEDIR)\smb_ioctl.h \
$(INCFILEDIR)\afsmsg95.h \
- $(INCFILEDIR)\afsrpc.h
+ $(INCFILEDIR)\afsrpc.h \
+ $(INCFILEDIR)\cm_dns.h \
+ $(INCFILEDIR)\cm_dns_private.h
IDLFILES =\
afsrpc.h afsrpc_c.obj
-CONFOBJS=cm_config.obj
+CONFOBJS=cm_config.obj \
+ cm_dns.obj
AFSDOBJS=\
afsd_init.obj \
cm_aclent.obj \
cm_dnlc.obj \
cm_rpc.obj \
- afsrpc_s.obj
+ afsrpc_s.obj \
+ cm_freelance.obj
cm_conn.obj: cm_conn.c
$(C2OBJ) -DAFS_PTHREAD_ENV $**
############################################################################
# Install target; primary makefile target
+install_objs: cm_dns.obj cm_config.obj
+ $(COPY) cm_dns.obj $(DESTDIR)\lib
+ $(COPY) cm_config.obj $(DESTDIR)\lib
+
install_headers: $(IDLFILES) $(INCFILES)
install: install_headers $(CONF_DLLFILE) \
#include "krb.h"
#include "krb_prot.h"
-#include <crypt.h>
+/*#include <crypt.h>*/
#include <afs/prs_fs.h>
#include <osi.h>
#include "cm_ioctl.h"
#include "cm_dnlc.h"
#include "cm_buf.h"
+#include "cm_freelance.h"
#ifdef DJGPP
#include "afs/afsmsg95.h"
#endif
extern BOOL reportSessionStartups;
+#ifdef AFS_FREELANCE_CLIENT
+
+// yj: Variables used by Freelance Client
+extern char *cm_FakeRootDir; // the fake root.afs directory
+
+extern int cm_noLocalMountPoints; // no. of fake mountpoints
+
+extern cm_localMountPoint_t* cm_localMountPoints; // array of fake mountpoints
+
+extern int cm_fakeDirSize; // size (in bytes) of fake root.afs directory
+
+extern int cm_fakeDirCallback; // state of the fake root.afs directory. indicates
+ // if it needs to be refreshed
+
+extern int cm_fakeGettingCallback; // 1 if currently updating the fake root.afs directory,
+ // 0 otherwise
+
+extern int cm_fakeDirVersion; // the version number of the root.afs directory. used
+ // invalidate all the buffers containing root.afs data
+ // after reinitialization
+// ------------------------------------------
+#endif /* AFS_FREELANCE_CLIENT */
+
+extern int cm_dnsEnabled;
+extern int cm_freelanceEnabled;
+
#endif /* AFSD_H_ENV */
cmd_AddParm(ts, "-tracebuf", CMD_SINGLE, CMD_OPTIONAL, "trace buffer size");
cmd_AddParm(ts, "-startup", CMD_FLAG, CMD_OPTIONAL, "start AFS client");
cmd_AddParm(ts, "-diskcache", CMD_SINGLE, CMD_OPTIONAL, "diskcache size");
+ cmd_AddParm(ts, "-afsdb", CMD_FLAG, CMD_OPTIONAL, "use DNS for cell server resolution");
+ cmd_AddParm(ts, "-freelance", CMD_FLAG, CMD_OPTIONAL, "virtual AFS root");
return (cmd_Dispatch(argc, argv));
}
DWORD cm_mountRootLen;
int cm_logChunkSize;
int cm_chunkSize;
+#ifdef AFS_FREELANCE_CLIENT
+char *cm_FakeRootDir;
+#endif /* freelance */
int smb_UseV3;
HANDLE afsi_file;
+#ifdef AFS_AFSDB_ENV
+int cm_dnsEnabled = 1;
+#endif
+
+/*#ifdef AFS_FREELANCE_CLIENT
+extern int cm_freelanceEnabled;
+#endif*/
+
+void cm_InitFakeRootDir();
+
void
afsi_start()
{
HKEY parmKey;
DWORD dummyLen;
long code;
+ /*int freelanceEnabled;*/
WSADATA WSAjunk;
WSAStartup(0x0101, &WSAjunk);
afsi_log("Default SecurityLevel is clear");
}
+#ifdef AFS_AFSDB_ENV
+ dummyLen = sizeof(cm_dnsEnabled);
+ code = RegQueryValueEx(parmKey, "UseDNS", NULL, NULL,
+ (BYTE *) &cm_dnsEnabled, &dummyLen);
+ if (code == ERROR_SUCCESS) {
+ afsi_log("DNS %s be used to find AFS cell servers",
+ cm_dnsEnabled ? "will" : "will not");
+ }
+ else {
+ cm_dnsEnabled = 1; /* default on */
+ }
+#endif /* AFS_AFSDB_ENV */
+
+#ifdef AFS_FREELANCE_CLIENT
+ dummyLen = sizeof(cm_freelanceEnabled);
+ code = RegQueryValueEx(parmKey, "FreelanceClient", NULL, NULL,
+ (BYTE *) &cm_freelanceEnabled, &dummyLen);
+ if (code == ERROR_SUCCESS) {
+ afsi_log("Freelance client feature %s activated",
+ cm_freelanceEnabled ? "is" : "is not");
+ }
+ else {
+ cm_freelanceEnabled = 0; /* default off */
+ }
+#endif /* AFS_FREELANCE_CLIENT */
+
RegCloseKey (parmKey);
/* setup early variables */
return -1;
}
+#ifdef AFS_AFSDB_ENV
+ if (cm_InitDNS(cm_dnsEnabled) == -1)
+ cm_dnsEnabled = 0; /* init failed, so deactivate */
+ afsi_log("cm_InitDNS %d", cm_dnsEnabled);
+#endif
+
code = cm_GetRootCellName(rootCellName);
afsi_log("cm_GetRootCellName code %d rcn %s", code,
(code ? "<none>" : rootCellName));
- if (code != 0) {
- *reasonP = "can't find root cell name in afsd.ini";
- return -1;
+ if (code != 0 && !cm_freelanceEnabled) {
+ *reasonP = "can't find root cell name in afsd.ini";
+ return -1;
+ }
+ else if (cm_freelanceEnabled)
+ cm_rootCellp = NULL;
+
+ if (code == 0 && !cm_freelanceEnabled) {
+ cm_rootCellp = cm_GetCell(rootCellName, CM_FLAG_CREATE);
+ afsi_log("cm_GetCell addr %x", cm_rootCellp);
+ if (cm_rootCellp == NULL) {
+ *reasonP = "can't find root cell in afsdcell.ini";
+ return -1;
+ }
}
- cm_rootCellp = cm_GetCell(rootCellName, CM_FLAG_CREATE);
- afsi_log("cm_GetCell addr %x", cm_rootCellp);
- if (cm_rootCellp == NULL) {
- *reasonP = "can't find root cell in afsdcell.ini";
- return -1;
- }
+#ifdef AFS_FREELANCE_CLIENT
+ if (cm_freelanceEnabled)
+ cm_InitFreelance();
+#endif
return 0;
}
/* this should really be in an init daemon from here on down */
- code = cm_GetVolumeByName(cm_rootCellp, cm_rootVolumeName, cm_rootUserp, &req, CM_FLAG_CREATE, &cm_rootVolumep);
- afsi_log("cm_GetVolumeByName code %x root vol %x", code,
- (code ? 0xffffffff : cm_rootVolumep));
- if (code != 0) {
- *reasonP = "can't find root volume in root cell";
- return -1;
+ if (!cm_freelanceEnabled) {
+ code = cm_GetVolumeByName(cm_rootCellp, cm_rootVolumeName, cm_rootUserp,
+ &req, CM_FLAG_CREATE, &cm_rootVolumep);
+ afsi_log("cm_GetVolumeByName code %x root vol %x", code,
+ (code ? 0xffffffff : cm_rootVolumep));
+ if (code != 0) {
+ *reasonP = "can't find root volume in root cell";
+ return -1;
+ }
}
- /* compute the root fid */
- cm_rootFid.cell = cm_rootCellp->cellID;
- cm_rootFid.volume = cm_GetROVolumeID(cm_rootVolumep);
- cm_rootFid.vnode = 1;
- cm_rootFid.unique = 1;
+ /* compute the root fid */
+ if (!cm_freelanceEnabled) {
+ cm_rootFid.cell = cm_rootCellp->cellID;
+ cm_rootFid.volume = cm_GetROVolumeID(cm_rootVolumep);
+ cm_rootFid.vnode = 1;
+ cm_rootFid.unique = 1;
+ }
+ else
+ cm_FakeRootFid(&cm_rootFid);
code = cm_GetSCache(&cm_rootFid, &cm_rootSCachep, cm_rootUserp, &req);
afsi_log("cm_GetSCache code %x scache %x", code,
return 0;
}
+
int afs_diskCacheChunks;
char cm_cachePath[128];
int cm_diskCacheEnabled = 0;
+#ifdef AFS_AFSDB_ENV
+extern int cm_dnsEnabled;
+#endif
+
+#ifdef AFS_FREELANCE_CLIENT
+extern int cm_freelanceEnabled;
+char *cm_FakeRootDir;
+#endif /* freelance */
int smb_UseV3;
int afsd_debug;
cm_initparams_v1 cm_initParams;
+
/*
* AFSD Initialization Log
*
afsi_log("Default disk cache size %d", diskCacheSize);
}
+ if (as->parms[22].items) {
+ /* -noafsdb */
+ cm_dnsEnabled = 0;
+ }
+
+ if (as->parms[23].items) {
+ /* -freelance */
+ cm_freelanceEnabled = 1;
+ }
+
if (ParseCacheInfoFile()) {
exit(1);
}
rx_StartServer(0);
afsi_log("rx_StartServer");
+#ifdef AFS_AFSDB_ENV
+ /* initialize dns lookup */
+ if (cm_InitDNS(cm_dnsEnabled) == -1)
+ cm_dnsEnabled = 0; /* init failed, so deactivate */
+ afsi_log("cm_InitDNS %d", cm_dnsEnabled);
+#endif
+
/* init user daemon, and other packages */
cm_InitUser();
code = cm_GetRootCellName(rootCellName);
afsi_log("cm_GetRootCellName code %d rcn %s", code,
(code ? "<none>" : rootCellName));
- if (code != 0) {
+ if (code != 0 && !cm_freelanceEnabled) {
*reasonP = "can't find root cell name in ThisCell";
return -1;
}
-
- cm_rootCellp = cm_GetCell(rootCellName, CM_FLAG_CREATE);
- afsi_log("cm_GetCell addr %x", cm_rootCellp);
- if (cm_rootCellp == NULL) {
- *reasonP = "can't find root cell in CellServDB";
- return -1;
+ else if (cm_freelanceEnabled)
+ cm_rootCellp = NULL;
+
+ if (code == 0 && !cm_freelanceEnabled) {
+ cm_rootCellp = cm_GetCell(rootCellName, CM_FLAG_CREATE);
+ afsi_log("cm_GetCell addr %x", cm_rootCellp);
+ if (cm_rootCellp == NULL) {
+ *reasonP = "can't find root cell in CellServDB";
+ return -1;
+ }
}
+#ifdef AFS_FREELANCE_CLIENT
+ if (cm_freelanceEnabled)
+ cm_InitFreelance();
+#endif
+
return 0;
}
/* this should really be in an init daemon from here on down */
- code = cm_GetVolumeByName(cm_rootCellp, cm_rootVolumeName, cm_rootUserp, &req, CM_FLAG_CREATE, &cm_rootVolumep);
- afsi_log("cm_GetVolumeByName code %x root vol %x", code,
- (code ? 0xffffffff : cm_rootVolumep));
- if (code != 0) {
- *reasonP = "can't find root volume in root cell";
- return -1;
- }
+ if (!cm_freelanceEnabled) {
+ code = cm_GetVolumeByName(cm_rootCellp, cm_rootVolumeName, cm_rootUserp, &req, CM_FLAG_CREATE, &cm_rootVolumep);
+ afsi_log("cm_GetVolumeByName code %x root vol %x", code,
+ (code ? 0xffffffff : cm_rootVolumep));
+ if (code != 0) {
+ *reasonP = "can't find root volume in root cell";
+ return -1;
+ }
+ }
/* compute the root fid */
- cm_rootFid.cell = cm_rootCellp->cellID;
- cm_rootFid.volume = cm_GetROVolumeID(cm_rootVolumep);
- cm_rootFid.vnode = 1;
- cm_rootFid.unique = 1;
+ if (!cm_freelanceEnabled) {
+ cm_rootFid.cell = cm_rootCellp->cellID;
+ cm_rootFid.volume = cm_GetROVolumeID(cm_rootVolumep);
+ cm_rootFid.vnode = 1;
+ cm_rootFid.unique = 1;
+ }
+ else
+ cm_FakeRootFid(&cm_rootFid);
code = cm_GetSCache(&cm_rootFid, &cm_rootSCachep, cm_rootUserp, &req);
afsi_log("cm_GetSCache code %x scache %x", code,
return 0;
}
+
/* read/write lock for all global storage in this module */
osi_rwlock_t cm_callbackLock;
+/*
+#ifdef AFS_FREELANCE_CLIENT
+extern int cm_fakeDirCallback;
+extern int cm_fakeGettingCallback;
+#endif
+*/
+#ifdef AFS_FREELANCE_CLIENT
+extern osi_mutex_t cm_Freelance_Lock;
+#endif
+
/* count of # of callback breaking messages received by this CM so far. We use
* this count in determining whether there have been any callback breaks that
* apply to a call that returned a new callback. If the counter doesn't
*/
int cm_HaveCallback(cm_scache_t *scp)
{
- if (scp->cbServerp != NULL)
- return 1;
- else return 0;
+#ifdef AFS_FREELANCE_CLIENT
+ // yj: we handle callbacks specially for callbacks on the root directory
+ // Since it's local, we almost always say that we have callback on it
+ // The only time we send back a 0 is if we're need to initialize or
+ // reinitialize the fake directory
+
+ // There are 2 state variables cm_fakeGettingCallback and cm_fakeDirCallback
+ // cm_fakeGettingCallback is 1 if we're in the process of initialization and
+ // hence should return false. it's 0 otherwise
+ // cm_fakeDirCallback is 0 if we haven't loaded the fake directory, it's 1
+ // if the fake directory is loaded and this is the first time cm_HaveCallback
+ // is called since then. We return false in this case to allow cm_GetCallback
+ // to be called because cm_GetCallback has some initialization work to do.
+ // If cm_fakeDirCallback is 2, then it means that the fake directory is in
+ // good shape and we simply return true, provided no change is detected.
+ int fdc, fgc;
+
+ if (cm_freelanceEnabled && scp->fid.cell==0x1 && scp->fid.volume==0x20000001) { // if it's something on /afs
+ if (!(scp->fid.vnode==0x1 && scp->fid.unique==0x1)) // if it's not root.afs
+ return 1;
+ else {
+ lock_ObtainMutex(&cm_Freelance_Lock);
+ fdc = cm_fakeDirCallback;
+ fgc = cm_fakeGettingCallback;
+ lock_ReleaseMutex(&cm_Freelance_Lock);
+
+ if (fdc==1) { // first call since init
+ return 0;
+ } else if (fdc==2 && !fgc) { // we're in good shape
+ if (cm_getLocalMountPointChange()) { // check for changes
+ cm_clearLocalMountPointChange(); // clear the changefile
+ cm_reInitLocalMountPoints(); // start reinit
+ return 0;
+ }
+ return 1; // no change
+ }
+ return 0;
+ }
+ }
+#endif
+
+ if (scp->cbServerp != NULL)
+ return 1;
+ else return 0;
}
/* need to detect a broken callback that races with our obtaining a callback.
int mustCall;
long sflags;
+#ifdef AFS_FREELANCE_CLIENT
+ // yj
+ // The case where a callback is needed on /afs is handled
+ // specially. We need to fetch the status by calling
+ // cm_MergeStatus and mark that cm_fakeDirCallback is 2
+ if (cm_freelanceEnabled &&
+ scp->fid.cell==0x1 &&
+ scp->fid.volume==0x20000001 &&
+ scp->fid.unique==0x1 &&
+ scp->fid.vnode==0x1) {
+ // Start by indicating that we're in the process
+ // of fetching the callback
+
+ lock_ObtainMutex(&cm_Freelance_Lock);
+ cm_fakeGettingCallback = 1;
+ lock_ReleaseMutex(&cm_Freelance_Lock);
+
+ // Fetch the status info
+ cm_MergeStatus(scp, &afsStatus, &volSync, userp, 0);
+
+ // Indicate that the callback is not done
+ lock_ObtainMutex(&cm_Freelance_Lock);
+ cm_fakeDirCallback = 2;
+ // Indicate that we're no longer fetching the callback
+ cm_fakeGettingCallback = 0;
+ lock_ReleaseMutex(&cm_Freelance_Lock);
+
+ return 0;
+ }
+
+ /*if (scp->fid.cell==0x1 && scp->fid.volume==0x20000001) {
+ afsi_log("cm_getcallback should NEVER EVER get here... ");
+ }*/
+ // yj: end of getcallback modifications ---------------
+
+#endif /* AFS_FREELANCE_CLIENT */
+
mustCall = (flags & 1);
cm_AFSFidFromFid(&tfid, &scp->fid);
while (1) {
cm_cell_t *cp;
long code;
static cellCounter = 1; /* locked by cm_cellLock */
+ int ttl;
lock_ObtainWrite(&cm_cellLock);
for(cp = cm_allCellsp; cp; cp=cp->nextp) {
if (strcmp(namep, cp->namep) == 0) break;
}
- if (!cp && (flags & CM_FLAG_CREATE)) {
- cp = malloc(sizeof(*cp));
+
+ if ((!cp && (flags & CM_FLAG_CREATE))
+#ifdef AFS_AFSDB_ENV
+ /* if it's from DNS, see if it has expired */
+ || (cp && (cp->flags & CM_CELLFLAG_DNS) && (time(0) > cp->timeout))
+#endif
+ ) {
+ if (!cp) cp = malloc(sizeof(*cp));
memset(cp, 0, sizeof(*cp));
code = cm_SearchCellFile(namep, NULL, cm_AddCellProc, cp);
- if (code) {
- free(cp);
- cp = NULL;
- goto done;
- }
+#ifdef AFS_AFSDB_ENV
+ if (code && cm_dnsEnabled) {
+ code = cm_SearchCellByDNS(namep, NULL, &ttl, cm_AddCellProc, cp);
+#endif
+ if (code) {
+ free(cp);
+ cp = NULL;
+ goto done;
+ }
+#ifdef AFS_AFSDB_ENV
+ else { /* got cell from DNS */
+ cp->flags |= CM_CELLFLAG_DNS;
+ cp->timeout = time(0) + ttl;
+ }
+ }
+#endif
/* randomise among those vlservers having the same rank*/
cm_RandomizeServer(&cp->vlServersp);
cm_cell_t *cm_FindCellByID(long cellID)
{
cm_cell_t *cp;
+ int ttl;
+ int code;
lock_ObtainWrite(&cm_cellLock);
for(cp = cm_allCellsp; cp; cp=cp->nextp) {
if (cellID == cp->cellID) break;
}
+
+#ifdef AFS_AFSDB_ENV
+ /* if it's from DNS, see if it has expired */
+ if (cp && cm_dnsEnabled && (cp->flags & CM_CELLFLAG_DNS) && (time(0) > cp->timeout)) {
+ code = cm_SearchCellByDNS(cp->namep, NULL, &ttl, cm_AddCellProc, cp);
+ if (code == 0) { /* got cell from DNS */
+ cp->flags |= CM_CELLFLAG_DNS;
+#ifdef DEBUG
+ fprintf(stderr, "cell %s: ttl=%d\n", cp->namep, ttl);
+#endif
+ cp->timeout = time(0) + ttl;
+ }
+ /* if we fail to find it this time, we'll just do nothing and leave the
+ current entry alone */
+ }
+#endif /* AFS_AFSDB_ENV */
+
lock_ReleaseWrite(&cm_cellLock);
return cp;
struct cm_serverRef *vlServersp; /* locked by cm_serverLock */
osi_mutex_t mx; /* mutex locking fields (flags) */
long flags; /* locked by mx */
+ long timeout; /* if dns, time at which the server addrs expire */
} cm_cell_t;
#define CM_CELLFLAG_SUID 1 /* setuid flag; not yet used */
+#define CM_CELLFLAG_DNS 2 /* cell servers are from DNS */
extern void cm_InitCell(void);
#include <string.h>
#include "cm_config.h"
+#ifdef AFS_AFSDB_ENV
+#include "cm_dns.h"
+#include <afs/afsint.h>
+#endif
char AFSConfigKeyName[] =
"SYSTEM\\CurrentControlSet\\Services\\TransarcAFSDaemon\\Parameters";
} /* while loop processing all lines */
}
+long cm_SearchCellByDNS(char *cellNamep, char *newCellNamep, int *ttl,
+ cm_configProc_t *procp, void *rockp)
+{
+#ifdef AFS_AFSDB_ENV
+ int rc;
+ int cellHosts[AFSMAXCELLHOSTS];
+ int numServers;
+ int i;
+ struct sockaddr_in vlSockAddr;
+
+ rc = getAFSServer(cellNamep, cellHosts, &numServers, ttl);
+ if (rc == 0 && numServers > 0) { /* found the cell */
+ for (i = 0; i < numServers; i++) {
+ memcpy(&vlSockAddr.sin_addr.s_addr, &cellHosts[i],
+ sizeof(long));
+ vlSockAddr.sin_family = AF_INET;
+ /* sin_port supplied by connection code */
+ if (procp)
+ (*procp)(rockp, &vlSockAddr, NULL);
+ if(newCellNamep)
+ strcpy(newCellNamep,cellNamep);
+ }
+ return 0; /* found cell */
+ }
+ else
+#endif /* AFS_AFSDB_ENV */
+ return -1; /* not found */
+}
+
#if !defined(DJGPP) && !defined(AFS_WIN95_ENV)
/* look up the root cell's name in the Registry */
long cm_GetRootCellName(char *cellNamep)
return code;
}
+
+void cm_GetConfigDir(char *dir)
+{
+ char wdir[256];
+ char *afsconf_path;
+ int code;
+ int tlen;
+
+#if !defined(DJGPP) && !defined(AFS_WIN95_ENV)
+ code = GetWindowsDirectory(wdir, sizeof(wdir));
+ if (code == 0 || code > sizeof(wdir)) wdir[0] = 0;
+
+ /* add trailing backslash, if required */
+ tlen = strlen(wdir);
+ if (wdir[tlen-1] != '\\') strcat(wdir, "\\");
+#else
+#ifdef DJGPP
+ strcpy(wdir,cm_confDir);
+#else
+ afsconf_path = getenv("AFSCONF");
+ if (!afsconf_path)
+ strcpy(wdir, AFSDIR_CLIENT_ETC_DIRPATH);
+ else
+ strcpy(wdir, afsconf_path);
+#endif /* !DJGPP */
+ strcat(wdir,"\\");
+#endif /* DJGPP || WIN95 */
+ strcpy(dir, wdir);
+}
extern long cm_SearchCellFile(char *cellNamep, char *newCellNamep,
cm_configProc_t *procp, void *rockp);
+extern long cm_SearchCellByDNS(char *cellNamep, char *newCellNamep, int *ttl,
+ cm_configProc_t *procp, void *rockp);
+
extern long cm_WriteConfigString(char *labelp, char *valuep);
extern long cm_WriteConfigInt(char *labelp, long value);
#include "afsd.h"
osi_mutex_t cm_bufGetMutex;
+#ifdef AFS_FREELANCE_CLIENT
+extern osi_mutex_t cm_Freelance_Lock;
+#endif
/* functions called back from the buffer package when reading or writing data,
* or when holding or releasing a vnode pointer.
struct rx_call *callp;
cm_bulkIO_t biod; /* bulk IO descriptor */
cm_conn_t *connp;
+ int getroot;
+ long t1, t2;
/* now, the buffer may or may not be filled with good data (buf_GetNew
* drops lots of locks, and may indeed return a properly initialized
* buffer, although more likely it will just return a new, empty, buffer.
*/
+
+#ifdef AFS_FREELANCE_CLIENT
+
+ // yj: if they're trying to get the /afs directory, we need to
+ // handle it differently, since it's local rather than on any
+ // server
+
+ getroot = (scp==cm_rootSCachep) ;
+#endif
+
cm_AFSFidFromFid(&tfid, &scp->fid);
code = cm_SetupFetchBIOD(scp, &bufp->offset, &biod, up, reqp);
scp->dataVersion, bufp->dataVersion, scp, bufp, bufp->dcp);
#endif /* DISKCACHE95 */
+#ifdef AFS_FREELANCE_CLIENT
+
+ // yj code
+ // if getroot then we don't need to make any calls
+ // just return fake data
+
+ if (cm_freelanceEnabled && getroot) {
+ // setup the fake status
+ afsStatus.InterfaceVersion = 0x1;
+ afsStatus.FileType = 0x2;
+ afsStatus.LinkCount = scp->linkCount;
+ afsStatus.Length = cm_fakeDirSize;
+ afsStatus.DataVersion = cm_fakeDirVersion;
+ afsStatus.Author = 0x1;
+ afsStatus.Owner = 0x0;
+ afsStatus.CallerAccess = 0x9;
+ afsStatus.AnonymousAccess = 0x9;
+ afsStatus.UnixModeBits = 0x1ff;
+ afsStatus.ParentVnode = 0x1;
+ afsStatus.ParentUnique = 0x1;
+ afsStatus.SegSize = 0;
+ afsStatus.ClientModTime = 0x3b49f6e2;
+ afsStatus.ServerModTime = 0x3b49f6e2;
+ afsStatus.Group = 0;
+ afsStatus.SyncCounter = 0;
+ afsStatus.dataVersionHigh = 0;
+
+ // once we're done setting up the status info,
+ // we just fill the buffer pages with fakedata
+ // from cm_FakeRootDir. Extra pages are set to
+ // 0.
+
+ lock_ObtainMutex(&cm_Freelance_Lock);
+#ifdef DEBUG
+ afsi_log("bufp->offset is %d", bufp->offset);
+#endif
+ t1 = bufp->offset.LowPart;
+ qdp = biod.bufListEndp;
+ while (qdp) {
+ tbufp = osi_GetQData(qdp);
+ bufferp=tbufp->datap;
+ memset(bufferp, 0, buf_bufferSize);
+ t2 = cm_fakeDirSize - t1;
+ if (t2>buf_bufferSize) t2=buf_bufferSize;
+#ifdef DEBUG
+ afsi_log("t1:%d, t2:%d", t1, t2);
+#endif
+ if (t2 > 0) {
+ memcpy(bufferp, cm_FakeRootDir+t1, t2);
+ } else {
+ t2 = 0;
+ }
+ t1+=t2;
+ qdp = (osi_queueData_t *) osi_QPrev(&qdp->q);
+
+ }
+ lock_ReleaseMutex(&cm_Freelance_Lock);
+
+ // once we're done, we skip over the part of the
+ // code that does the ACTUAL fetching of data for
+ // real files
+
+ goto fetchingcompleted;
+ }
+
+#endif /* AFS_FREELANCE_CLIENT */
+
/* now make the call */
do {
code = cm_Conn(&scp->fid, up, reqp, &connp);
osi_Log0(afsd_logp, "CALL FetchData DONE");
} while (cm_Analyze(connp, up, reqp, &scp->fid, &volSync, NULL, code));
+
+ fetchingcompleted:
code = cm_MapRPCError(code, reqp);
lock_ObtainMutex(&scp->mx);
#define MAX_PATH 260
osi_mutex_t cm_Afsdsbmt_Lock;
+#ifdef AFS_FREELANCE_CLIENT
+extern osi_mutex_t cm_Freelance_Lock;
+#endif
extern afs_int32 cryptall;
char fullCell[256];
char volume[256];
char cell[256];
+ int ttl;
cm_InitReq(&req);
/* Get the full name for this cell */
code = cm_SearchCellFile(cell, fullCell, 0, 0);
- if (code)
+#ifdef AFS_AFSDB_ENV
+ if (code && cm_dnsEnabled)
+ code = cm_SearchCellByDNS(cell, fullCell, &ttl, 0, 0);
+#endif
+ if (code)
return CM_ERROR_NOSUCHCELL;
sprintf(mpInfo, "%c%s:%s", *ioctlp->inDatap, fullCell, volume);
strcpy(mpInfo, ioctlp->inDatap);
}
+#ifdef AFS_FREELANCE_CLIENT
+ if (cm_freelanceEnabled && dscp == cm_rootSCachep) {
+ /* we are adding the mount point to the root dir., so call
+ the freelance code to do the add. */
+ code = cm_FreelanceAddMount(leaf, fullCell, volume);
+ return code;
+ }
+#endif
/* create the symlink with mode 644. The lack of X bits tells
* us that it is a mount point.
*/
extern int afsd_shutdown(int);
extern int afs_shutdown;
-long cm_IoctlShutdown(smb_ioctl_t *ioctlp, cm_user_t *userp)
-{
+long cm_IoctlShutdown(smb_ioctl_t *ioctlp, cm_user_t *userp) {
afs_shutdown = 1; /* flag to shut down */
return 0;
}
#endif /* DJGPP */
+
extern long cm_IoctlShutdown(smb_ioctl_t *ioctlp, cm_user_t *userp);
+extern long cm_IoctlFreemountAddCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
+
+extern long cm_IoctlFreemountRemoveCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
#endif /* __CM_IOCTL_INTERFACES_ONLY__ */
/* Dummy scache entry for use with pioctl fids */
cm_scache_t cm_fakeSCache;
+#ifdef AFS_FREELANCE_CLIENT
+extern osi_mutex_t cm_Freelance_Lock;
+#endif
+
/* must be called with cm_scacheLock write-locked! */
void cm_AdjustLRU(cm_scache_t *scp)
{
long code;
cm_volume_t *volp;
cm_cell_t *cellp;
+ char* mp;
+ int special; // yj: boolean variable to test if file is on root.afs
+ int isRoot;
hash = CM_SCACHE_HASH(fidp);
osi_assert(fidp->cell != 0);
+ // yj: check if we have the scp, if so, we don't need
+ // to do anything else
lock_ObtainWrite(&cm_scacheLock);
for(scp=cm_hashTablep[hash]; scp; scp=scp->nextp) {
if (cm_FidCmp(fidp, &scp->fid) == 0) {
}
}
- /* otherwise, we need to find the volume */
- lock_ReleaseWrite(&cm_scacheLock); /* for perf. reasons */
- cellp = cm_FindCellByID(fidp->cell);
- if (!cellp) return CM_ERROR_NOSUCHCELL;
+ // yj: when we get here, it means we don't have an scp
+ // so we need to either load it or fake it, depending
+ // on whether the file is "special", see below.
+
+ // yj: if we're trying to get an scp for a file that's
+ // on root.afs of homecell, we want to handle it specially
+ // because we have to fill in the status stuff 'coz we
+ // don't want trybulkstat to fill it in for us
+#ifdef AFS_FREELANCE_CLIENT
+ special = (fidp->cell==0x1 && fidp->volume==0x20000001 &&
+ !(fidp->vnode==0x1 && fidp->unique==0x1));
+ isRoot = (fidp->cell==0x1 && fidp->volume==0x20000001 &&
+ fidp->vnode==0x1 && fidp->unique==0x1);
+ if (cm_freelanceEnabled && isRoot) {
+ /* freelance: if we are trying to get the root scp for the first
+ time, we will just put in a place holder entry. */
+ volp = NULL;
+ }
+
+ if (cm_freelanceEnabled && special) {
+ /*afsi_log("cm_getscache: special"); */
+ lock_ObtainMutex(&cm_Freelance_Lock);
+ mp =(cm_localMountPoints+fidp->vnode-2)->mountPointStringp;
+ lock_ReleaseMutex(&cm_Freelance_Lock);
+
+ scp = cm_GetNewSCache();
+
+ scp->fid = *fidp;
+ scp->volp = cm_rootSCachep->volp;
+ if (scp->dotdotFidp == (cm_fid_t *) NULL)
+ scp->dotdotFidp = (cm_fid_t *) malloc (sizeof(cm_fid_t));
+ scp->dotdotFidp->cell=0x1;
+ scp->dotdotFidp->volume=0x20000001;
+ scp->dotdotFidp->unique=1;
+ scp->dotdotFidp->vnode=1;
+ scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
+ scp->nextp=cm_hashTablep[hash];
+ cm_hashTablep[hash]=scp;
+ scp->flags |= CM_SCACHEFLAG_INHASH;
+ scp->refCount = 1;
+ scp->fileType = CM_SCACHETYPE_MOUNTPOINT;
+
+ lock_ObtainMutex(&cm_Freelance_Lock);
+ scp->length.LowPart = strlen(mp)+4;
+ scp->mountPointStringp=malloc(strlen(mp));
+ strcpy(scp->mountPointStringp,mp);
+ lock_ReleaseMutex(&cm_Freelance_Lock);
+
+ scp->owner=0x0;
+ scp->unixModeBits=0x1ff;
+ scp->clientModTime=0x3b49f6e2;
+ scp->serverModTime=0x3b49f6e2;
+ scp->parentUnique = 0x1;
+ scp->parentVnode=0x1;
+ scp->group=0;
+ scp->dataVersion=0x8;
+ *outScpp = scp;
+ lock_ReleaseWrite(&cm_scacheLock);
+ /*afsi_log(" getscache done");*/
+ return 0;
- code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, &volp);
- if (code) return code;
+ }
+ // end of yj code
+#endif /* AFS_FREELANCE_CLIENT */
+
+ /* otherwise, we need to find the volume */
+ if (!cm_freelanceEnabled || !isRoot) {
+ lock_ReleaseWrite(&cm_scacheLock); /* for perf. reasons */
+ cellp = cm_FindCellByID(fidp->cell);
+ if (!cellp) return CM_ERROR_NOSUCHCELL;
+
+ code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, &volp);
+ if (code) return code;
+ lock_ObtainWrite(&cm_scacheLock);
+ }
/* otherwise, we have the volume, now reverify that the scp doesn't
* exist, and proceed.
*/
- lock_ObtainWrite(&cm_scacheLock);
for(scp=cm_hashTablep[hash]; scp; scp=scp->nextp) {
if (cm_FidCmp(fidp, &scp->fid) == 0) {
scp->refCount++;
scp->fid = *fidp;
scp->volp = volp; /* a held reference */
- /* if this scache entry represents a volume root then we need
- * to copy the dotdotFipd from the volume structure where the
- * "master" copy is stored (defect 11489)
- */
- if(scp->fid.vnode == 1 && scp->fid.unique == 1 && volp->dotdotFidp) {
- if (scp->dotdotFidp == (cm_fid_t *) NULL)
- scp->dotdotFidp = (cm_fid_t *) malloc(sizeof(cm_fid_t));
- *(scp->dotdotFidp) = *volp->dotdotFidp;
+ if (!cm_freelanceEnabled || !isRoot) {
+ /* if this scache entry represents a volume root then we need
+ * to copy the dotdotFipd from the volume structure where the
+ * "master" copy is stored (defect 11489)
+ */
+ if(scp->fid.vnode == 1 && scp->fid.unique == 1 && volp->dotdotFidp) {
+ if (scp->dotdotFidp == (cm_fid_t *) NULL)
+ scp->dotdotFidp = (cm_fid_t *) malloc(sizeof(cm_fid_t));
+ *(scp->dotdotFidp) = *volp->dotdotFidp;
+ }
+
+ if (volp->roID == fidp->volume)
+ scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
+ else if (volp->bkID == fidp->volume)
+ scp->flags |= CM_SCACHEFLAG_RO;
}
-
- if (volp->roID == fidp->volume)
- scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
- else if (volp->bkID == fidp->volume)
- scp->flags |= CM_SCACHEFLAG_RO;
scp->nextp = cm_hashTablep[hash];
cm_hashTablep[hash] = scp;
scp->flags |= CM_SCACHEFLAG_INHASH;
goto sleep;
}
- if (flags & CM_SCACHESYNC_NEEDCALLBACK) {
+ // yj: modified this so that callback only checked if we're
+ // not checking something on /afs
+ if ( (flags & CM_SCACHESYNC_NEEDCALLBACK)
+#ifdef AFS_FREELANCE_CLIENT
+ && (!cm_freelanceEnabled || !(!(scp->fid.vnode==0x1 &&
+ scp->fid.unique==0x1) &&
+ scp->fid.cell==0x1 &&
+ scp->fid.volume==0x20000001))
+#endif /* AFS_FREELANCE_CLIENT */
+ ) {
if (!cm_HaveCallback(scp)) {
osi_Log1(afsd_logp, "CM SyncOp getting callback on scp %x",
(long) scp);
void cm_MergeStatus(cm_scache_t *scp, AFSFetchStatus *statusp, AFSVolSync *volp,
cm_user_t *userp, int flags)
{
+ // yj: i want to create some fake status for the /afs directory and the
+ // entries under that directory
+#ifdef AFS_FREELANCE_CLIENT
+ if (cm_freelanceEnabled && scp == cm_rootSCachep) {
+ statusp->InterfaceVersion = 0x1;
+ statusp->FileType = 0x2;
+ statusp->LinkCount = scp->linkCount;
+ statusp->Length = cm_fakeDirSize;
+ statusp->DataVersion = cm_fakeDirVersion;
+ statusp->Author = 0x1;
+ statusp->Owner = 0x0;
+ statusp->CallerAccess = 0x9;
+ statusp->AnonymousAccess = 0x9;
+ statusp->UnixModeBits = 0x1ff;
+ statusp->ParentVnode = 0x1;
+ statusp->ParentUnique = 0x1;
+ statusp->SegSize = 0;
+ statusp->ClientModTime = 0x3b49f6e2;
+ statusp->ServerModTime = 0x3b49f6e2;
+ statusp->Group = 0;
+ statusp->SyncCounter = 0;
+ statusp->dataVersionHigh = 0;
+ }
+#endif /* AFS_FREELANCE_CLIENT */
+
if (!(flags & CM_MERGEFLAG_FORCE)
&& statusp->DataVersion < (unsigned long) scp->dataVersion) {
struct cm_cell *cellp;
AFSFetchStatus newDirStatus;
AFSVolSync volSync;
+#ifdef AFS_FREELANCE_CLIENT
+ if (cm_freelanceEnabled && dscp == cm_rootSCachep) {
+ /* deleting a mount point from the root dir. */
+ code = cm_FreelanceRemoveMount(namep);
+ return code;
+ }
+#endif
+
/* make sure we don't screw up the dir status during the merge */
lock_ObtainMutex(&dscp->mx);
sflags = CM_SCACHESYNC_STOREDATA;
cm_ReleaseSCache(tscp);
} /* found entry */
+#ifdef AFS_FREELANCE_CLIENT
+ // yj: if this is a mountpoint under root.afs then we don't want it
+ // to be bulkstat-ed, instead, we call getSCache directly and under
+ // getSCache, it is handled specially.
+ if (cm_freelanceEnabled &&
+ tfid.cell==0x1 && tfid.volume==0x20000001 &&
+ !(tfid.vnode==0x1 && tfid.unique==0x1) )
+ {
+#ifdef DEBUG
+ afsi_log(" cm_trybulkproc going to call getscache");
+#endif
+ return cm_GetSCache(&tfid, &tscp, NULL, NULL);
+ }
+#endif /* AFS_FREELANCE_CLIENT */
+
i = bsp->counter++;
bsp->fids[i].Volume = scp->fid.volume;
bsp->fids[i].Vnode = tfid.vnode;
cm_AppendNewCell @10
cm_AppendNewCellLine @11
cm_CloseCellFile @12
+ cm_SearchCellByDNS @13
+ getAFSServer @14
+ cm_InitDNS @15
+ cm_GetConfigDir @16
/* spin lock version of wakeup, used internally only */
extern void osi_WakeupSpin(long value);
+#ifndef DJGPP
/* exported function to sleep on a value */
extern void osi_Sleep (long);
+#endif
extern void osi_FreeSleepInfo(osi_sleepInfo_t *);
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_vfsops.c,v 1.1.1.9 2001/09/11 14:25:07 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_vfsops.c,v 1.1.1.10 2001/10/14 17:59:08 hartmans Exp $");
#include "../afs/sysincludes.h"
#include "../afs/afsincludes.h"
void
afs_umount_begin(struct super_block *sbp)
{
- afs_shuttingdown=1;
afs_put_super(sbp);
+ afs_shuttingdown=1;
afs_was_mounted=0;
}
delete_inode: afs_delete_inode,
put_super: afs_put_super,
statfs: afs_statfs,
- umount_begin: afs_umount_begin,
+ umount_begin: NULL /* afs_umount_begin */
};
#else
struct super_operations afs_sops = {
afs_statfs,
NULL, /* afs_remount_fs - see doc above */
NULL, /* afs_clear_inode */
- afs_umount_begin,
+ NULL /* afs_umount_begin */
};
#endif
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_vm.c,v 1.1.1.5 2001/07/14 22:19:48 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_vm.c,v 1.1.1.6 2001/10/14 17:59:08 hartmans Exp $");
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
{
struct inode *ip = (struct inode*)avc;
- if (avc->vrefCount != 0)
+ if (VREFCOUNT(avc) != 0)
return EBUSY;
if (avc->opens != 0)
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_file.c,v 1.1.1.6 2001/09/11 14:25:08 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_file.c,v 1.1.1.7 2001/10/14 17:59:09 hartmans Exp $");
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
osi_Panic("afs_osi_Write called with null param");
if (offset != -1) afile->offset = offset;
AFS_GUNLOCK();
+#ifdef AFS_SUN59_ENV
+ code = gop_rdwr(UIO_WRITE, afile->vnode, (caddr_t) aptr, asize, afile->offset,
+ AFS_UIOSYS, 0, curproc->p_fsz_ctl.rlim_cur, &afs_osi_cred, &resid);
+#else
code = gop_rdwr(UIO_WRITE, afile->vnode, (caddr_t) aptr, asize, afile->offset,
AFS_UIOSYS, 0, (u.u_rlimit[RLIMIT_FSIZE].rlim_cur), &afs_osi_cred, &resid);
+#endif
AFS_GLOCK();
if (code == 0) {
code = asize - resid;
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_vfsops.c,v 1.1.1.8 2001/07/14 22:19:51 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_vfsops.c,v 1.1.1.9 2001/10/14 17:59:10 hartmans Exp $");
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
if ( !nfs_checkauth ) afs_warn("nfs_checkauth not initialised");
#endif
ufs_iallocp = (int (*)()) modlookup("ufs", "ufs_ialloc");
- ufs_iupdatp = (int (*)()) modlookup("ufs", "ufs_iupdat");
+ ufs_iupdatp = (void (*)()) modlookup("ufs", "ufs_iupdat");
ufs_igetp = (int (*)()) modlookup("ufs", "ufs_iget");
ufs_itimes_nolockp = (void (*)()) modlookup("ufs", "ufs_itimes_nolock");
udp_infop = (struct streamtab *) modlookup("udp", "udpinfo");
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.1.1.7 2001/09/11 14:25:09 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.1.1.8 2001/10/14 17:59:10 hartmans Exp $");
#if defined(AFS_SUN_ENV) || defined(AFS_SUN5_ENV)
/*
return code;
}
-int afs_frlock(vnp, cmd, ap, flag, off, credp)
+int afs_frlock(vnp, cmd, ap, flag, off,
+#ifdef AFS_SUN59_ENV
+ flkcb,
+#endif
+ credp)
struct vnode *vnp;
int cmd;
#if defined(AFS_SUN56_ENV)
#endif
int flag;
offset_t off;
+#ifdef AFS_SUN59_ENV
+ struct flk_callback *flkcb;
+#endif
struct AFS_UCRED *credp;
{
register afs_int32 code = 0;
* Implement based on afs_lockctl
*/
AFS_GLOCK();
+#ifdef AFS_SUN59_ENV
+ if (flkcb)
+ afs_warn("Don't know how to deal with flk_callback's!\n");
+#endif
if ((cmd == F_GETLK) || (cmd == F_O_GETLK) || (cmd == F_SETLK) || (cmd == F_SETLKW)) {
#ifdef AFS_SUN53_ENV
ap->l_pid = ttoproc(curthread)->p_pid;
return EINVAL;
}
-int afs_dumpctl(vp, i)
+int afs_dumpctl(vp, i
+#ifdef AFS_SUN59_ENV
+ , blkp
+#endif
+ )
struct vnode *vp;
int i;
+#ifdef AFS_SUN59_ENV
+int *blkp;
+#endif
{
afs_warn("afs_dumpctl: Not implemented\n");
return EINVAL;
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_flock.c,v 1.1.1.7 2001/07/14 22:19:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_flock.c,v 1.1.1.8 2001/10/14 17:59:12 hartmans Exp $");
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
if (code) {
return(0); /* failed, say it is 'unlocked' */
} else {
- return((int)OutStatus.spare2);
+ return((int)OutStatus.lockCount);
}
}
#endif
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_remove.c,v 1.1.1.4 2001/07/14 22:19:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_remove.c,v 1.1.1.5 2001/10/14 17:59:13 hartmans Exp $");
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
osi_dnlc_remove ( adp, aname, tvc);
if (tvc) afs_symhint_inval(tvc);
- Tadp1 = adp; Tadpr = adp->vrefCount; Ttvc = tvc; Tnam = aname; Tnam1 = 0;
- if (tvc) Ttvcr = tvc->vrefCount;
+ Tadp1 = adp; Tadpr = VREFCOUNT(adp); Ttvc = tvc; Tnam = aname; Tnam1 = 0;
+ if (tvc) Ttvcr = VREFCOUNT(tvc);
#ifdef AFS_AIX_ENV
- if (tvc && (tvc->vrefCount > 2) && tvc->opens > 0 && !(tvc->states & CUnlinked)) {
+ if (tvc && (VREFCOUNT(tvc) > 2) && tvc->opens > 0 && !(tvc->states & CUnlinked)) {
#else
- if (tvc && (tvc->vrefCount > 1) && tvc->opens > 0 && !(tvc->states & CUnlinked)) {
+ if (tvc && (VREFCOUNT(tvc) > 1) && tvc->opens > 0 && !(tvc->states & CUnlinked)) {
#endif
char *unlname = newname();
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_strategy.c,v 1.1.1.6 2001/09/11 14:25:13 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_strategy.c,v 1.1.1.7 2001/10/14 17:59:13 hartmans Exp $");
#if !defined(AFS_HPUX_ENV) && !defined(AFS_SGI_ENV) && !defined(AFS_LINUX20_ENV)
tuio.afsio_offset = (u_int) dbtob(abp->b_blkno);
#ifdef AFS_SUN5_ENV
tuio._uio_offset._p._u = 0;
+#ifdef AFS_SUN59_ENV
+ tuio.uio_limit = curproc->p_fsz_ctl.rlim_cur;
+#else
tuio.uio_limit = u.u_rlimit[RLIMIT_FSIZE].rlim_cur;
#endif
+#endif
#else
tuio.afsio_offset = DEV_BSIZE * abp->b_blkno;
#endif
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_write.c,v 1.1.1.8 2001/09/20 06:07:36 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/VNOPS/afs_vnop_write.c,v 1.1.1.9 2001/10/14 17:59:14 hartmans Exp $");
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include "../afs/afsincludes.h" /* Afs-based standard headers */
ReleaseWriteLock(&avc->lock);
}
#ifdef AFS_OSF_ENV
- if ((avc->vrefCount <= 2) && (avc->states & CUnlinked)) {
+ if ((VREFCOUNT(avc) <= 2) && (avc->states & CUnlinked)) {
afs_remunlink(avc, 1); /* ignore any return code */
}
#endif
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_analyze.c,v 1.1.1.7 2001/09/20 06:07:11 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_analyze.c,v 1.1.1.8 2001/10/14 17:58:52 hartmans Exp $");
#include "../afs/stds.h"
#include "../afs/sysincludes.h" /* Standard vendor system headers */
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_buffer.c,v 1.1.1.5 2001/09/11 14:24:36 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_buffer.c,v 1.1.1.6 2001/10/14 17:58:52 hartmans Exp $");
#include "../afs/sysincludes.h"
#if !defined(UKERNEL)
MReleaseWriteLock(&afs_bufferLock);
return 0;
}
+ MObtainWriteLock(&tb->lock,260);
+ MReleaseWriteLock(&afs_bufferLock);
+ tb->lockers++;
tfile = afs_CFileOpen(fid[0]);
sizep = (afs_int32 *)tfile;
if (page * AFS_BUFFER_PAGESIZE >= *sizep) {
dirp_Zap(tb->fid);
+ tb->lockers--;
+ MReleaseWriteLock(&tb->lock);
afs_CFileClose(tfile);
- MReleaseWriteLock(&afs_bufferLock);
return 0;
}
- MObtainWriteLock(&tb->lock,260);
- MReleaseWriteLock(&afs_bufferLock);
- tb->lockers++;
code = afs_CFileRead(tfile, tb->page * AFS_BUFFER_PAGESIZE,
tb->data, AFS_BUFFER_PAGESIZE);
afs_CFileClose(tfile);
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_callback.c,v 1.1.1.6 2001/09/20 06:07:11 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_callback.c,v 1.1.1.7 2001/10/14 17:58:53 hartmans Exp $");
#include "../afs/sysincludes.h" /*Standard vendor system headers*/
#include "../afs/afsincludes.h" /*AFS-based standard headers*/
a_result->DataVersion = hgetlo(tvc->m.DataVersion);
a_result->callback = afs_data_pointer_to_int32(tvc->callback); /* XXXX Now a pointer; change it XXXX */
a_result->cbExpires = tvc->cbExpires;
- a_result->refCount = tvc->vrefCount;
+ a_result->refCount = VREFCOUNT(tvc);
a_result->opens = tvc->opens;
a_result->writers = tvc->execsOrWriters;
a_result->mvstat = tvc->mvstat;
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_cell.c,v 1.1.1.7 2001/09/11 14:24:38 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_cell.c,v 1.1.1.8 2001/10/14 17:58:54 hartmans Exp $");
#include "../afs/stds.h"
#include "../afs/sysincludes.h" /* Standard vendor system headers */
/* Local variables. */
struct cell *afs_rootcell = 0;
+/* Handler waiting for request from client */
static char afs_AfsdbHandlerWait;
+/* Client waiting for handler to become available or finish request */
static char afs_AfsdbLookupWait;
+/* Set to 1 when we've seen the userspace AFSDB process at least once */
char afs_AfsdbHandlerPresent = 0;
+/* Set to 1 when there is a client interacting with the AFSDB handler.
+ * Protects the in and out variables below. Protected by GLOCK. */
char afs_AfsdbHandlerInuse = 0;
+/* Set to 1 when AFSDB has been shut down */
+char afs_AfsdbHandlerShutdown = 0;
+/* Input to handler from the client: cell name to look up */
char *afs_AfsdbHandler_CellName;
+/* Outputs from handler to client: cell hosts, TTL, and real cell name */
afs_int32 *afs_AfsdbHandler_CellHosts;
int *afs_AfsdbHandler_Timeout;
+char **afs_AfsdbHandler_RealName;
-char afs_AfsdbHandler_ReqPending;
-char afs_AfsdbHandler_Completed;
+/* Client sets ReqPending to 1 whenever it queues a request for it */
+char afs_AfsdbHandler_ReqPending = 0;
+/* Handler sets Completed to 1 when it completes the client request */
+char afs_AfsdbHandler_Completed = 0;
-struct cell *afs_GetCellByName_int();
+static struct cell *afs_GetCellByName_int();
int afs_strcasecmp(s1, s2)
register char *s1, *s2;
#ifdef AFS_AFSDB_ENV
+void afs_StopAfsdb()
+{
+ if (afs_AfsdbHandlerPresent) {
+ afs_osi_Wakeup(&afs_AfsdbHandlerWait);
+ } else {
+ afs_AfsdbHandlerShutdown = 1;
+ afs_termState = AFSOP_STOP_RXEVENT;
+ }
+}
+
int afs_AfsdbHandler(acellName, acellNameLen, kernelMsg)
char *acellName;
int acellNameLen;
{
/* afs_syscall_call() has already grabbed the global lock */
+ if (afs_AfsdbHandlerShutdown) return -2;
afs_AfsdbHandlerPresent = 1;
if (afs_AfsdbHandler_ReqPending) {
*afs_AfsdbHandler_Timeout = kernelMsg[1];
if (*afs_AfsdbHandler_Timeout) *afs_AfsdbHandler_Timeout += osi_Time();
+ *afs_AfsdbHandler_RealName = afs_osi_Alloc(strlen(acellName) + 1);
+ strcpy(*afs_AfsdbHandler_RealName, acellName);
+
for (i=0; i<MAXCELLHOSTS; i++) {
if (i >= hostCount)
afs_AfsdbHandler_CellHosts[i] = 0;
}
/* Wait for a request */
- while (afs_AfsdbHandler_ReqPending == 0)
+ while (afs_AfsdbHandler_ReqPending == 0 && afs_termState != AFSOP_STOP_AFSDB)
afs_osi_Sleep(&afs_AfsdbHandlerWait);
+ /* Check if we're shutting down */
+ if (afs_termState == AFSOP_STOP_AFSDB) {
+ /* Inform anyone waiting for us that we're going away */
+ afs_AfsdbHandlerShutdown = 1;
+ afs_AfsdbHandlerPresent = 0;
+ afs_osi_Wakeup(&afs_AfsdbLookupWait);
+
+ afs_termState = AFSOP_STOP_RXEVENT;
+ afs_osi_Wakeup(&afs_termState);
+ return -2;
+ }
+
/* Copy the requested cell name into the request buffer */
strncpy(acellName, afs_AfsdbHandler_CellName, acellNameLen);
#endif
-int afs_GetCellHostsFromDns(acellName, acellHosts, timeout)
+int afs_GetCellHostsFromDns(acellName, acellHosts, timeout, realName)
char *acellName;
afs_int32 *acellHosts;
int *timeout;
+ char **realName;
{
#ifdef AFS_AFSDB_ENV
char grab_glock = 0;
if (!afs_AfsdbHandlerPresent) return ENOENT;
+ /* Initialize host list to empty in case the handler is gone */
+ *acellHosts = 0;
+
if (!ISAFS_GLOCK()) {
grab_glock = 1;
AFS_GLOCK();
afs_AfsdbHandler_CellName = acellName;
afs_AfsdbHandler_CellHosts = acellHosts;
afs_AfsdbHandler_Timeout = timeout;
+ afs_AfsdbHandler_RealName = realName;
/* Wake up the AFSDB handler */
afs_AfsdbHandler_Completed = 0;
afs_osi_Wakeup(&afs_AfsdbHandlerWait);
/* Wait for the handler to get back to us with the reply */
- while (!afs_AfsdbHandler_Completed)
+ while (afs_AfsdbHandlerPresent && !afs_AfsdbHandler_Completed)
afs_osi_Sleep(&afs_AfsdbLookupWait);
/* Release the AFSDB handler and wake up others waiting for it */
void afs_RefreshCell(tc)
register struct cell *tc;
{
- afs_int32 acellHosts[MAXCELLHOSTS];
+ afs_int32 cellHosts[MAXCELLHOSTS];
+ char *realName = NULL;
int timeout;
/* Don't need to do anything if no timeout or it's not expired */
if (!tc->timeout || tc->timeout > osi_Time()) return;
- if (!afs_GetCellHostsFromDns(tc->cellName, acellHosts, &timeout)) {
- afs_NewCell(tc->cellName, acellHosts, tc->states,
- tc->lcellp ? tc->lcellp->cellName : (char *) 0,
- tc->fsport, tc->vlport, timeout);
- }
+ if (afs_GetCellHostsFromDns(tc->cellName, cellHosts, &timeout, &realName))
+ /* In case of lookup failure, keep old data */
+ goto done;
+
+ /* Refresh the DB servers for the real cell; other values stay the same. */
+ afs_NewCell(realName, cellHosts, 0, (char *) 0, 0, 0, timeout, (char *) 0);
+
+ /* If this is an alias, update the alias entry too */
+ if (afs_strcasecmp(tc->cellName, realName))
+ afs_NewCell(tc->cellName, 0, CAlias, (char *) 0, 0, 0,
+ timeout, realName);
- /* In case of a DNS failure, keep old cell data.. */
- return;
+done:
+ if (realName)
+ afs_osi_Free(realName, strlen(realName) + 1);
}
register char *acellName;
afs_int32 locktype;
{
- afs_int32 acellHosts[MAXCELLHOSTS];
+ afs_int32 cellHosts[MAXCELLHOSTS];
+ char *realName = NULL;
int timeout;
- if (afs_GetCellHostsFromDns(acellName, acellHosts, &timeout))
- return (struct cell *) 0;
- if (afs_NewCell(acellName, acellHosts, CNoSUID, (char *) 0, 0, 0, timeout))
- return (struct cell *) 0;
+ if (afs_GetCellHostsFromDns(acellName, cellHosts, &timeout, &realName))
+ goto bad;
+ if (afs_NewCell(realName, cellHosts, CNoSUID, (char *) 0, 0, 0,
+ timeout, (char *) 0))
+ goto bad;
+ /* If this is an alias, create an entry for it too */
+ if (afs_strcasecmp(acellName, realName)) {
+ if (afs_NewCell(acellName, 0, CAlias, (char *) 0, 0, 0,
+ timeout, realName))
+ goto bad;
+ }
+
+ if (realName)
+ afs_osi_Free(realName, strlen(realName) + 1);
return afs_GetCellByName_int(acellName, locktype, 0);
+
+bad:
+ if (realName)
+ afs_osi_Free(realName, strlen(realName) + 1);
+ return (struct cell *) 0;
}
-struct cell *afs_GetCellByName_int(acellName, locktype, trydns)
+static struct cell *afs_GetCellByName_int(acellName, locktype, trydns)
register char *acellName;
afs_int32 locktype;
char trydns;
QAdd(&CellLRU, &tc->lruq);
ReleaseWriteLock(&afs_xcell);
afs_RefreshCell(tc);
+ if (tc->states & CAlias) {
+ tc = tc->alias;
+ afs_RefreshCell(tc);
+ }
return tc;
}
}
} /*afs_GetCellByIndex*/
-afs_int32 afs_NewCell(acellName, acellHosts, aflags, linkedcname, fsport, vlport, timeout)
+afs_int32 afs_NewCell(acellName, acellHosts, aflags, linkedcname, fsport, vlport, timeout, aliasFor)
int aflags;
char *acellName;
register afs_int32 *acellHosts;
char *linkedcname;
u_short fsport, vlport;
int timeout;
+ char *aliasFor;
{
register struct cell *tc, *tcl=0;
register afs_int32 i, newc=0, code=0;
register struct afs_q *cq, *tq;
AFS_STATCNT(afs_NewCell);
- if (*acellHosts == 0)
+ if (!(aflags & CAlias) && *acellHosts == 0)
/* need >= one host to gen cell # */
return EINVAL;
for (cq = CellLRU.next; cq != &CellLRU; cq = tq) {
tc = QTOC(cq); tq = QNext(cq);
if (afs_strcasecmp(tc->cellName, acellName) == 0) {
+ /* if the cell we've found has the correct name but no timeout,
+ * and we're called with a non-zero timeout, bail out: never
+ * override static configuration entries with AFSDB ones. */
+ if (timeout && !tc->timeout) {
+ ReleaseWriteLock(&afs_xcell);
+ return 0;
+ }
/* we don't want to keep pinging old vlservers which were down,
* since they don't matter any more. It's easier to do this than
* to remove the server from its various hash tables. */
tc->timeout = timeout;
memset((char *)tc->cellHosts, 0, sizeof(tc->cellHosts));
+ if (aflags & CAlias) {
+ struct cell *tca = NULL;
+
+ if (!aliasFor) {
+ code = EINVAL;
+ goto bad;
+ }
+ for (cq = CellLRU.next; cq != &CellLRU; cq = tq) {
+ tca = QTOC(cq); tq = QNext(cq);
+ if (!afs_strcasecmp(tca->cellName, aliasFor))
+ break;
+ }
+ if (!tca) {
+ code = ENOENT;
+ goto bad;
+ }
+ tc->alias = tca;
+ goto done;
+ }
+
for (i=0; i<MAXCELLHOSTS; i++) {
struct server *ts;
afs_uint32 temp = acellHosts[i];
afs_PutServer(ts, WRITE_LOCK);
}
afs_SortServers(tc->cellHosts, MAXCELLHOSTS); /* randomize servers */
+done:
ReleaseWriteLock(&afs_xcell);
return 0;
bad:
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_dcache.c,v 1.1.1.6 2001/09/11 14:24:39 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_dcache.c,v 1.1.1.7 2001/10/14 17:58:55 hartmans Exp $");
#include "../afs/sysincludes.h" /*Standard vendor system headers*/
#include "../afs/afsincludes.h" /*AFS-based standard headers*/
int CTD_nSleeps;
} CTD_stats;
+void afs_MaybeWakeupTruncateDaemon() {
+ if (!afs_CacheTooFull && afs_CacheIsTooFull()) {
+ afs_CacheTooFull = 1;
+ if (!afs_TruncateDaemonRunning)
+ afs_osi_Wakeup((char *)afs_CacheTruncateDaemon);
+ } else if (!afs_TruncateDaemonRunning &&
+ afs_blocksDiscarded > CM_MAXDISCARDEDCHUNKS) {
+ afs_osi_Wakeup((char *)afs_CacheTruncateDaemon);
+ }
+}
+
u_int afs_min_cache = 0;
void afs_CacheTruncateDaemon() {
osi_timeval_t CTD_tmpTime;
afs_stats_AddTo(CTD_stats.CTD_sleepTime, CTD_tmpTime);
}
if (afs_termState == AFSOP_STOP_TRUNCDAEMON) {
+#ifdef AFS_AFSDB_ENV
+ afs_termState = AFSOP_STOP_AFSDB;
+#else
afs_termState = AFSOP_STOP_RXEVENT;
+#endif
afs_osi_Wakeup(&afs_termState);
break;
}
/* these fields are protected by the lock on the vcache and luck
* on the dcache */
-#define updateV2DC(l,v,d,src) { \
- if (!l || 0 == NBObtainWriteLock(&((v)->lock),src)) { \
- if (hsame((v)->m.DataVersion, (d)->f.versionNo) && (v)->callback) { \
- (v)->quick.dc = (d); \
- (v)->quick.stamp = (d)->stamp = MakeStamp(); \
- (v)->quick.minLoc = AFS_CHUNKTOBASE((d)->f.chunk); \
- /* Don't think I need these next two lines forever */ \
- (v)->quick.len = (d)->f.chunkBytes; \
- (v)->h1.dchint = (d); \
- } \
- if(l) ReleaseWriteLock(&((v)->lock)); \
- } }
+void updateV2DC(int l, struct vcache *v, struct dcache *d, int src) {
+ if (!l || 0 == NBObtainWriteLock(&(v->lock),src)) {
+ if (hsame(v->m.DataVersion, d->f.versionNo) && v->callback) {
+ v->quick.dc = d;
+ v->quick.stamp = d->stamp = MakeStamp();
+ v->quick.minLoc = AFS_CHUNKTOBASE(d->f.chunk);
+ /* Don't think I need these next two lines forever */
+ v->quick.len = d->f.chunkBytes;
+ v->h1.dchint = d;
+ }
+ if(l) ReleaseWriteLock(&((v)->lock));
+ }
+}
struct dcache *afs_GetDCache(avc, abyte, areq, aoffset, alen, aflags)
register struct vcache *avc; /*Held*/
/* Watch for standard race condition */
if (hsame(avc->m.DataVersion, tdc->f.versionNo)) {
- updateV2DC(0,avc,tdc,569); /* set hint */
+ updateV2DC(0,avc,tdc,569); /* set hint */
if (setLocks) ReleaseWriteLock(&avc->lock);
afs_stats_cmperf.dcacheHits++;
goto done;
afs_stats_cmperf.dcacheMisses++;
afs_Trace3(afs_iclSetp, CM_TRACE_FETCHPROC, ICL_TYPE_POINTER, avc,
ICL_TYPE_INT32, Position, ICL_TYPE_INT32, size);
+
+ /*
+ * Dynamic root support: fetch data from local memory.
+ */
+ if (afs_IsDynroot(avc)) {
+ char *dynrootDir;
+ int dynrootLen;
+
+ afs_GetDynroot(&dynrootDir, &dynrootLen, &tsmall->OutStatus);
+
+ dynrootDir += Position;
+ dynrootLen -= Position;
+ if (size > dynrootLen)
+ size = dynrootLen;
+ if (size < 0) size = 0;
+ code = afs_osi_Write(file, -1, dynrootDir, size);
+ afs_PutDynroot();
+
+ if (code == size)
+ code = 0;
+ else
+ code = -1;
+
+ tdc->validPos = Position + size;
+ afs_CFileTruncate(file, size); /* prune it */
+ } else
+ /*
+ * Not a dynamic vnode: do the real fetch.
+ */
do {
tc = afs_Conn(&avc->fid, areq, SHARED_LOCK);
if (tc) {
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_server.c,v 1.1.1.9 2001/09/11 14:24:45 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_server.c,v 1.1.1.10 2001/10/14 17:58:58 hartmans Exp $");
#include "../afs/stds.h"
#include "../afs/sysincludes.h" /* Standard vendor system headers */
for (i=0; i<count; i++) {
if (!aservers[i]) break;
for (low=i,j=i+1; j<=count; j++) {
- if (!aservers[j]) break;
- if (aservers[j]->addr->sa_iprank < aservers[low]->addr->sa_iprank) {
- low = j;
- }
+ if ((!aservers[j]) || (!aservers[j]->addr))
+ break;
+ if ((!aservers[low]) || (!aservers[low]->addr))
+ break;
+ if (aservers[j]->addr->sa_iprank < aservers[low]->addr->sa_iprank) {
+ low = j;
+ }
}
if (low != i) {
ts = aservers[i];
if (sa) sa->sa_iprank= 0;
for (ill = (struct ill_s *)*addr /*ill_g_headp*/; ill; ill = ill->ill_next ) {
+#ifdef AFS_SUN58_ENV
+ /* Make sure this is an IPv4 ILL */
+ if (ill->ill_isv6) continue;
+#endif
for (ipif = ill->ill_ipif; ipif; ipif = ipif->ipif_next ) {
subnet = ipif->ipif_local_addr & ipif->ipif_net_mask;
subnetmask = ipif->ipif_net_mask;
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_util.c,v 1.1.1.5 2001/07/14 22:19:28 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_util.c,v 1.1.1.6 2001/10/14 17:58:58 hartmans Exp $");
#include "../afs/stds.h"
#include "../afs/sysincludes.h" /* Standard vendor system headers */
for(i=0;i<VCSIZE;i++) {
for(tvc = afs_vhashT[i]; tvc; tvc=tvc->hnext) {
#ifdef AFS_OSF_ENV
- if (tvc->vrefCount > 1)
+ if (VREFCOUNT(tvc) > 1)
#else /* AFS_OSF_ENV */
- if (tvc->vrefCount)
+ if (VREFCOUNT(tvc))
#endif
afs_warn("Stat cache entry at %x is held\n", tvc);
if (CheckLock(&tvc->lock))
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_vcache.c,v 1.1.1.8 2001/09/11 14:24:48 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_vcache.c,v 1.1.1.9 2001/10/14 17:58:59 hartmans Exp $");
#include "../afs/sysincludes.h" /*Standard vendor system headers*/
#include "../afs/afsincludes.h" /*AFS-based standard headers*/
/* This should put it back on the vnode free list since usecount is 1 */
afs_vcount--;
vSetType(avc, VREG);
- if (avc->vrefCount > 0) {
+ if (VREFCOUNT(avc) > 0) {
VN_UNLOCK((struct vnode *)avc);
AFS_RELE((struct vnode *)avc);
} else {
int vmax = 2 * afs_cacheStats;
int vn = VCACHE_FREE;
+ AFS_GUNLOCK();
+ shrink_dcache_sb(afs_globalVFS);
+ AFS_GLOCK();
+
i = 0;
for(tq = VLRU.prev; tq != &VLRU && vn > 0; tq = uq) {
tvc = QTOV(tq);
if (tvc == afs_globalVp)
continue;
- if ( tvc->vrefCount && tvc->opens == 0 ) {
+ if ( VREFCOUNT(tvc) && tvc->opens == 0 ) {
struct inode *ip = (struct inode*)tvc;
if (list_empty(&ip->i_dentry)) {
vn --;
refpanic ("Exceeded pool of AFS vnodes(VLRU cycle?)");
else if (QNext(uq) != tq)
refpanic ("VLRU inconsistent");
- else if (tvc->vrefCount < 1)
+ else if (VREFCOUNT(tvc) < 1)
refpanic ("refcnt 0 on VLRU");
- if ( tvc->vrefCount == 1 && tvc->opens == 0
+ if ( VREFCOUNT(tvc) == 1 && tvc->opens == 0
&& (tvc->states & CUnlinkedDel) == 0) {
code = afs_FlushVCache(tvc, &fv_slept);
if (code == 0) {
#ifdef AFS_DARWIN_ENV
if (tvc->opens == 0 && ((tvc->states & CUnlinkedDel) == 0) &&
- tvc->vrefCount == 1 && UBCINFOEXISTS(&tvc->v)) {
+ VREFCOUNT(tvc) == 1 && UBCINFOEXISTS(&tvc->v)) {
osi_VM_TryReclaim(tvc, &fv_slept);
if (fv_slept) {
uq = VLRU.prev;
}
}
#endif
- if (tvc->vrefCount == 0 && tvc->opens == 0
+ if (VREFCOUNT(tvc) == 0 && tvc->opens == 0
&& (tvc->states & CUnlinkedDel) == 0) {
code = afs_FlushVCache(tvc, &fv_slept);
if (code == 0) {
/* Hold it for the LRU (should make count 2) */
VN_HOLD((struct vnode *)tvc);
#else /* AFS_OSF_ENV */
- tvc->vrefCount = 1; /* us */
+ VREFCOUNT_SET(tvc, 1); /* us */
#endif /* AFS_OSF_ENV */
#ifdef AFS_AIX32_ENV
LOCK_INIT(&tvc->pvmlock, "vcache pvmlock");
/*
* That's because if we come in via the CUnlinkedDel bit state path we'll be have 0 refcnt
*/
- osi_Assert(tvc->vrefCount > 0);
+ osi_Assert(VREFCOUNT(tvc) > 0);
AFS_RWLOCK((vnode_t *)tvc, VRWLOCK_WRITE);
#endif
ObtainWriteLock(&tvc->lock,52);
AFS_FAST_RELE(tvc);
if (didCore) {
#ifdef AFS_GFS_ENV
- tvc->vrefCount--;
+ VREFCOUNT_DEC(tvc);
#else
AFS_RELE((struct vnode *)tvc);
#endif
}
}
#ifdef AFS_DARWIN_ENV
- if (tvc->vrefCount == 1 && UBCINFOEXISTS(&tvc->v)) {
+ if (VREFCOUNT(tvc) == 1 && UBCINFOEXISTS(&tvc->v)) {
if (tvc->opens) panic("flushactive open, hasubc, but refcnt 1");
osi_VM_TryReclaim(tvc,0);
}
/* stat the file */
afs_RemoveVCB(afid);
{
- struct AFSFetchStatus OutStatus;
- code = afs_FetchStatus(tvc, afid, areq, &OutStatus);
+ struct AFSFetchStatus OutStatus;
+
+ if (afs_DynrootNewVnode(tvc, &OutStatus)) {
+ afs_ProcessFS(tvc, &OutStatus, areq);
+ tvc->states |= CStatd | CUnique;
+ code = 0;
+ } else {
+ code = afs_FetchStatus(tvc, afid, areq, &OutStatus);
+ }
}
if (code) {
vms_delete(tvc->segid);
AFS_GLOCK();
tvc->segid = tvc->vmh = NULL;
- if (tvc->vrefCount) osi_Panic("flushVcache: vm race");
+ if (VREFCOUNT(tvc)) osi_Panic("flushVcache: vm race");
}
if (tvc->credp) {
crfree(tvc->credp);
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_volume.c,v 1.1.1.7 2001/09/20 06:07:16 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_volume.c,v 1.1.1.8 2001/10/14 17:59:00 hartmans Exp $");
#include "../afs/stds.h"
#include "../afs/sysincludes.h" /* Standard vendor system headers */
/* Forward declarations */
static struct volume *afs_NewVolumeByName(char *aname, afs_int32 acell, int agood,
struct vrequest *areq, afs_int32 locktype);
+static struct volume *afs_NewDynrootVolume(struct VenusFid *fid);
static inVolList();
tv = afs_FindVolume(afid, locktype);
if (!tv) {
- bp = afs_cv2string(&tbuf[CVBS], afid->Fid.Volume);
- tv = afs_NewVolumeByName(bp, afid->Cell, 0, areq, locktype);
+ if (afs_IsDynrootFid(afid)) {
+ tv = afs_NewDynrootVolume(afid);
+ } else {
+ bp = afs_cv2string(&tbuf[CVBS], afid->Fid.Volume);
+ tv = afs_NewVolumeByName(bp, afid->Cell, 0, areq, locktype);
+ }
}
return tv;
} /*afs_GetVolume*/
return(tv);
}
+static struct volume *afs_NewDynrootVolume(struct VenusFid *fid) {
+ struct cell *tcell;
+ struct volume *tv;
+ struct vldbentry tve;
+ char *bp, tbuf[CVBS];
+
+ tcell = afs_GetCell(fid->Cell, READ_LOCK);
+ if (!tcell)
+ return (struct volume *) 0;
+ if (!(tcell->states & CHasVolRef))
+ tcell->states |= CHasVolRef;
+
+ bp = afs_cv2string(&tbuf[CVBS], fid->Fid.Volume);
+ memset(&tve, 0, sizeof(tve));
+ strcpy(tve.name, "local-dynroot");
+ tve.volumeId[ROVOL] = fid->Fid.Volume;
+ tve.flags = VLF_ROEXISTS;
+
+ tv = afs_SetupVolume(0, bp, &tve, tcell, 0, 0, 0);
+ afs_PutCell(tcell, READ_LOCK);
+ return tv;
+}
+
int lastnvcode;
static struct volume *afs_NewVolumeByName(char *aname, afs_int32 acell, int agood,
struct vrequest *areq, afs_int32 locktype)
#define BEGINMAC do {
#define ENDMAC } while (0)
-#if defined(AFS_SUN5_ENV)
+#if defined(AFS_SUN5_ENV) || defined(AFS_OBSD_ENV)
#define MyPidxx (curproc->p_pid)
#else
#if defined(AFS_AIX41_ENV)
${INSTALL} -f afs.rc.solaris.2.7 ${DEST}/root.client/usr/vice/etc/modload/afs.rc ;;\
sun4x_58 ) \
${INSTALL} -f afs.rc.solaris.2.8 ${DEST}/root.client/usr/vice/etc/modload/afs.rc ;;\
+ sun4x_59 ) \
+ ${INSTALL} -f afs.rc.solaris.2.9 ${DEST}/root.client/usr/vice/etc/modload/afs.rc ;;\
sun4x_5? ) \
${INSTALL} -f afs.rc.solaris.2_5 ${DEST}/root.client/usr/vice/etc/modload/afs.rc ;;\
alpha_osf* ) \
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/afsd/afsd.c,v 1.1.1.10 2001/09/20 06:12:14 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afsd/afsd.c,v 1.1.1.11 2001/10/14 18:03:37 hartmans Exp $");
#define VFS 1
#include <sys/vfs.h>
#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
#include <netinet/in.h>
#include <afs/afs_args.h>
#include <afs/cellconfig.h>
#ifdef AFS_AFSDB_ENV
static int enable_afsdb = 0; /* enable AFSDB support */
#endif
+static int enable_dynroot = 0; /* enable dynroot support */
#ifdef notdef
static int inodes = 60; /* VERY conservative, but has to be */
#endif
struct afsconf_cell acellInfo;
int i;
+ kernelMsg[0] = 0;
+ kernelMsg[1] = 0;
+ acellName[0] = '\0';
+
while (1) {
/* On some platforms you only get 4 args to an AFS call */
int sizeArg = ((sizeof acellName) << 16) | (sizeof kernelMsg);
continue;
}
+ if (*acellName == 1) /* Shutting down */
+ break;
+
code = afsconf_GetAfsdbInfo(acellName, 0, &acellInfo);
if (code) {
kernelMsg[0] = 0;
kernelMsg[1] = 0;
for (i=0; i<acellInfo.numServers; i++)
kernelMsg[i+2] = acellInfo.hostAddr[i].sin_addr.s_addr;
+ strncpy(acellName, acellInfo.name, sizeof(acellName));
+ acellName[sizeof(acellName) - 1] = '\0';
}
}
+
+ exit(1);
}
#endif
nFilesPerDir = res;
}
}
+ if (as->parms[26].items) {
+ /* -dynroot */
+ enable_dynroot = 1;
+ }
/*
* Pull out all the configuration info for the workstation's AFS cache and
}
#endif
+ if (enable_dynroot) {
+ if (afsd_verbose)
+ printf("%s: Enabling dynroot support in kernel.\n", rn);
+ code = call_syscall(AFSOP_SET_DYNROOT, 1);
+ if (code)
+ printf("%s: Error enabling dynroot support.\n", rn);
+ }
+
/* Initialize AFS daemon threads. */
if (afsd_verbose)
printf("%s: Forking AFS daemon.\n", rn);
#endif
), "Enable AFSDB support");
cmd_AddParm(ts, "-files_per_subdir", CMD_SINGLE, CMD_OPTIONAL, "log(2) of the number of cache files per cache subdirectory");
+ cmd_AddParm(ts, "-dynroot", CMD_FLAG, CMD_OPTIONAL, "Enable dynroot support");
return (cmd_Dispatch(argc, argv));
}
long param1, param2, param3, param4, param5, param6, param7;
{
int error;
+#ifdef AFS_LINUX20_ENV
+ long eparm[4];
+
+ eparm[0] = param4;
+ eparm[1] = param5;
+ eparm[2] = param6;
+ eparm[3] = param7;
+
+ param4 = eparm;
+#endif
error = syscall(AFS_SYSCALL, AFSCALL_CALL, param1, param2, param3, param4, param5, param6, param7);
if (afsd_verbose) printf("SScall(%d, %d)=%d ", AFS_SYSCALL, AFSCALL_CALL, error);
#include <afsconfig.h>
#include <afs/param.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/afsd/vsys.c,v 1.1.1.4 2001/07/14 22:20:07 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/afsd/vsys.c,v 1.1.1.5 2001/10/14 18:03:38 hartmans Exp $");
#include <afs/afs_args.h>
}
code = syscall(AFS_SYSCALL, parms[0], parms[1], parms[2], parms[3], parms[4], parms[5]);
printf("code %d\n", code);
+ return 0;
}
#define ReleaseLockEvent "AFS_SRX_RelLock"
#define SetVolumeStatusEvent "AFS_SRX_SetVolS"
#define FlushCPSEvent "AFS_SRX_FlusCPS"
+#define InlineBulkFetchStatusEvent "AFS_SRX_BIFchSt"
#define PrivilegeEvent "AFS_Priv"
#define PrivSetID "AFS_PrivSet"
/* Next 5 lines on behalf of MR-AFS */
$(EXELIBDIR)\afslwp.lib \
$(EXELIBDIR)\afs\afsutil.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
- $(EXELIBDIR)\afs\afsreg.lib
+ $(EXELIBDIR)\afs\afsreg.lib \
+ $(DESTDIR)\lib\cm_dns.obj
$(SETKEY_EXEFILE): $(SETKEY_EXEOBJS) $(EXELIBS)
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/auth/authcon.c,v 1.1.1.6 2001/09/20 06:12:37 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/auth/authcon.c,v 1.1.1.7 2001/10/14 18:04:00 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/auth/cellconfig.c,v 1.1.1.10 2001/09/20 06:12:38 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/auth/cellconfig.c,v 1.1.1.11 2001/10/14 18:04:01 hartmans Exp $");
#include <afs/stds.h>
#include <afs/pthread_glock.h>
#include <sys/utime.h>
#include <io.h>
#include <WINNT/afssw.h>
+#ifdef AFS_AFSDB_ENV
+#include <cm_dns.h>
+#endif /* AFS_AFSDB_ENV */
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/file.h>
#include <sys/time.h>
+#include <afs/afsint.h>
#ifdef AFS_AFSDB_ENV
#include <arpa/nameser.h>
#include <resolv.h>
#include <ctype.h>
#include <time.h>
#include <stdio.h>
+#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#endif /* UKERNEL */
#include <afs/afsutil.h>
#include "cellconfig.h"
static afsconf_Reopen();
static struct afsconf_servPair serviceTable [] = {
- "afs", 7000,
- "afscb", 7001,
- "afsprot", 7002,
- "afsvldb", 7003,
- "afskauth", 7004,
- "afsvol", 7005,
- "afserror", 7006,
- "afsnanny", 7007,
- "afsupdate",7008,
- "afsrmtsys",7009,
- "afsres", 7010, /* residency database for MR-AFS */
- "afsremio", 7011, /* remote I/O interface for MR-AFS */
- 0, 0 /* insert new services before this spot */
+ { "afs", 7000, },
+ { "afscb", 7001, },
+ { "afsprot", 7002, },
+ { "afsvldb", 7003, },
+ { "afskauth", 7004, },
+ { "afsvol", 7005, },
+ { "afserror", 7006, },
+ { "afsnanny", 7007, },
+ { "afsupdate", 7008, },
+ { "afsrmtsys", 7009, },
+ { "afsres", 7010, }, /* residency database for MR-AFS */
+ { "afsremio", 7011, }, /* remote I/O interface for MR-AFS */
+ { 0, 0 } /* insert new services before this spot */
};
/*
register int tc;
tp = abuffer;
- while (tc = *tp) {
+ while ((tc = *tp)) {
if (!isspace(tc)) break;
tp++;
}
#else
i = GetCellUnix(adir);
#endif
+
+#ifndef AFS_FREELANCE_CLIENT /* no local cell not fatal in freelance */
if (i) {
return i;
}
+#endif
/* now parse the individual lines */
curEntry = 0;
}
#ifdef AFS_AFSDB_ENV
+#if !defined(AFS_NT40_ENV)
afsconf_GetAfsdbInfo(acellName, aservice, acellInfo)
char *acellName;
char *aservice;
size_t len;
unsigned char answer[1024];
unsigned char *p;
+ char realCellName[256];
char host[256];
int server_num = 0;
int minttl = 0;
code = dn_expand(answer, answer + len, p, host, sizeof(host));
if (code < 0)
return AFSCONF_NOTFOUND;
- strncpy(acellInfo->name, host, sizeof(acellInfo->name));
p += code + QFIXEDSZ; /* Skip name */
short afsdb_type;
afsdb_type = (p[0] << 8) | p[1];
+ if (afsdb_type == 1) {
+ /*
+ * We know this is an AFSDB record for our cell, of the
+ * right AFSDB type. Write down the true cell name that
+ * the resolver gave us above.
+ */
+ strcpy(realCellName, host);
+ }
+
code = dn_expand(answer, answer+len, p+2, host, sizeof(host));
if (code < 0)
return AFSCONF_NOTFOUND;
if (server_num == 0) /* No AFSDB records */
return AFSCONF_NOTFOUND;
+ strncpy(acellInfo->name, realCellName, sizeof(acellInfo->name));
acellInfo->numServers = server_num;
if (aservice) {
return 0;
}
+#else /* windows */
+int afsconf_GetAfsdbInfo(acellName, aservice, acellInfo)
+ char *aservice;
+ char *acellName;
+ struct afsconf_cell *acellInfo;
+{
+ register afs_int32 i;
+ int tservice;
+ struct afsconf_entry DNSce;
+ char *DNStmpStrp; /* a temp string pointer */
+ struct hostent *thp;
+ afs_int32 cellHosts[AFSMAXCELLHOSTS];
+ int numServers;
+ int rc;
+ int *ttl;
+
+ DNSce.cellInfo.numServers=0;
+ DNSce.next = NULL;
+ rc = getAFSServer(acellName, cellHosts, &numServers, &ttl);
+ /* ignore the ttl here since this code is only called by transitory programs
+ like klog, etc. */
+ if (rc < 0)
+ return -1;
+ if (numServers == 0)
+ return -1;
+
+ for (i = 0; i < numServers; i++)
+ {
+ memcpy(&acellInfo->hostAddr[i].sin_addr.s_addr, &cellHosts[i], sizeof(long));
+ acellInfo->hostAddr[i].sin_family = AF_INET;
+
+ /* sin_port supplied by connection code */
+ }
+
+ acellInfo->numServers = numServers;
+ strcpy(acellInfo->name, acellName);
+ if (aservice) {
+ LOCK_GLOBAL_MUTEX
+ tservice = afsconf_FindService(aservice);
+ UNLOCK_GLOBAL_MUTEX
+ if (tservice < 0) {
+ return AFSCONF_NOTFOUND; /* service not found */
+ }
+ for(i=0; i< acellInfo->numServers; i++) {
+ acellInfo->hostAddr[i].sin_port = tservice;
+ }
+ }
+ acellInfo->linkedCell = NULL; /* no linked cell */
+ acellInfo->flags = 0;
+ return 0;
+}
+#endif /* windows */
#endif /* AFS_AFSDB_ENV */
afsconf_GetCellInfo(adir, acellName, aservice, acellInfo)
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/auth/ktc.c,v 1.1.1.6 2001/09/11 14:31:22 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/auth/ktc.c,v 1.1.1.7 2001/10/14 18:04:01 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <errno.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/vice.h>
#ifdef AFS_AIX_ENV
#include <sys/lockf.h>
#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include "auth.h"
#include <afs/venus.h>
#include <afs/afsutil.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/auth/userok.c,v 1.1.1.6 2001/09/20 06:12:39 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/auth/userok.c,v 1.1.1.7 2001/10/14 18:04:02 hartmans Exp $");
#include <afs/stds.h>
#include <afs/pthread_glock.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/auth/writeconfig.c,v 1.1.1.6 2001/09/11 14:31:23 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/auth/writeconfig.c,v 1.1.1.7 2001/10/14 18:04:02 hartmans Exp $");
#include <afs/pthread_glock.h>
#include <afs/afsutil.h>
#include <sys/types.h>
-#ifdef AFS_SUN5_ENV
-#include <fcntl.h>
-#endif
#ifdef AFS_NT40_ENV
#include <winsock2.h>
#include <fcntl.h>
#endif
#include <stdio.h>
#include <errno.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
#include "cellconfig.h"
#include "keys.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bnode.c,v 1.1.1.6 2001/09/11 14:31:25 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bnode.c,v 1.1.1.7 2001/10/14 18:04:03 hartmans Exp $");
#include <stddef.h>
#include <stdlib.h>
#include <afs/fileutil.h>
#include "bnode.h"
+#ifdef AFS_AIX_ENV
+/* All known versions of AIX lack WCOREDUMP but this works */
+#define WCOREDUMP(x) ((x) & 0x80)
+#endif
+
#define BNODE_LWP_STACKSIZE (16 * 1024)
int bnode_waiting = 0;
RememberProcName(tp);
tb->errorSignal = 0;
}
+ if (tp->coreName)
+ bozo_Log("%s:%s exited with code %d",
+ tb->name, tp->coreName, tp->lastExit);
+ else
+ bozo_Log("%s exited with code %d",
+ tb->name, tp->lastExit);
}
else {
/* Signal occurred, perhaps spurious due to shutdown request.
tb->lastErrorExit = FT_ApproxTime();
RememberProcName(tp);
}
+ if (tp->coreName)
+ bozo_Log("%s:%s exited on signal %d%s",
+ tb->name, tp->coreName, tp->lastSignal,
+ WCOREDUMP(status) ? " (core dumped)" : "");
+ else
+ bozo_Log("%s exited on signal %d%s",
+ tb->name, tp->lastSignal,
+ WCOREDUMP(status) ? " (core dumped)" : "");
SaveCore(tb, tp);
}
tb->lastAnyExit = FT_ApproxTime();
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bos.c,v 1.1.1.8 2001/09/20 06:12:42 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bos.c,v 1.1.1.9 2001/10/14 18:04:04 hartmans Exp $");
#include <afs/stds.h>
#include <stdlib.h>
parms[1] = "now"; /* when to do it */
code = BOZO_CreateBnode(aconn, "cron", "salvage-tmp", parms[0], parms[1],
parms[2], parms[3], parms[4], notifier);
- if (code) goto done;
+ if (code) {
+ printf("bos: failed to start 'salvager' (%s)\n", em(code));
+ goto done;
+ }
/* now wait for bnode to disappear */
while (1) {
IOMGR_Sleep(5);
/* now do the salvage operation */
printf("Starting salvage.\n");
rc = DoSalvage(tconn, (char *) 0, (char *) 0, outName, showlog,parallel,tmpDir,orphans);
- if (rc) printf("bos: failed to start 'salvager' (%s)\n", em(rc));
if (curGoal == BSTAT_NORMAL) {
printf("bos: restarting fs.\n");
code = BOZO_SetTStatus(tconn, "fs", BSTAT_NORMAL);
printf("Starting salvage.\n");
rc = DoSalvage(tconn, as->parms[1].items->data, (char *) 0,
outName, showlog,parallel,tmpDir,orphans);
- if (rc) printf("bos: failed to start 'salvager' (%s)\n", em(rc));
if (curGoal == BSTAT_NORMAL) {
printf("bos: restarting fs.\n");
code = BOZO_SetTStatus(tconn, "fs", BSTAT_NORMAL);
printf("Starting salvage.\n");
rc = DoSalvage(tconn, as->parms[1].items->data, tname, outName,
showlog,parallel,tmpDir,orphans);
- if (rc) {
- printf("bos: failed to start 'salvager' (%s)\n", em(rc));
+ if (rc)
return rc;
- }
}
return 0;
}
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bosoprocs.c,v 1.1.1.7 2001/09/20 06:12:43 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bosoprocs.c,v 1.1.1.8 2001/10/14 18:04:05 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bosserver.c,v 1.1.1.9 2001/09/20 06:12:44 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/bosserver.c,v 1.1.1.10 2001/10/14 18:04:05 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/cronbnodeops.c,v 1.1.1.6 2001/09/20 06:12:45 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/cronbnodeops.c,v 1.1.1.7 2001/10/14 18:04:06 hartmans Exp $");
#include <sys/types.h>
#include <sys/stat.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/fsbnodeops.c,v 1.1.1.7 2001/09/20 06:12:45 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bozo/fsbnodeops.c,v 1.1.1.8 2001/10/14 18:04:06 hartmans Exp $");
#include <sys/types.h>
#include <lwp.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/bucoord/main.c,v 1.1.1.7 2001/09/20 06:12:50 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/bucoord/main.c,v 1.1.1.8 2001/10/14 18:04:11 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/budb/server.c,v 1.1.1.6 2001/09/20 06:12:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/budb/server.c,v 1.1.1.7 2001/10/14 18:04:15 hartmans Exp $");
#ifdef AFS_NT40_ENV
#include <winsock2.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/butc/tcmain.c,v 1.1.1.6 2001/09/20 06:12:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/butc/tcmain.c,v 1.1.1.7 2001/10/14 18:04:17 hartmans Exp $");
#include <sys/types.h>
#include <sys/stat.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/butm/butm_test.c,v 1.1.1.6 2001/09/20 06:12:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/butm/butm_test.c,v 1.1.1.7 2001/10/14 18:04:19 hartmans Exp $");
#include <sys/types.h>
#include <sys/file.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/butm/test_ftm.c,v 1.1.1.6 2001/09/20 06:13:00 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/butm/test_ftm.c,v 1.1.1.7 2001/10/14 18:04:21 hartmans Exp $");
#include <sys/types.h>
#include <fcntl.h>
AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_page_lock)
CPPFLAGS="$save_CPPFLAGS"])
+
+dnl LINUX_BUILD_VNODE_FROM_INODE (configdir, outputdir)
+dnl defaults: (src/config, src/afs/LINUX)
+
+AC_DEFUN(LINUX_BUILD_VNODE_FROM_INODE, [
+AC_MSG_CHECKING(whether to build osi_vfs.h)
+configdir=ifelse([$1], ,src/config,$1)
+outputdir=ifelse([$2], ,src/afs/LINUX,$2)
+chmod +x $configdir/make_vnode.pl
+$configdir/make_vnode.pl -i $LINUX_KERNEL_PATH -o $outputdir
+])
ac_cv_linux_fs_struct_inode_has_i_truncate_sem=no)])
AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_truncate_sem)
CPPFLAGS="$save_CPPFLAGS"])
+
+AC_DEFUN(LINUX_FS_STRUCT_INODE_HAS_I_DEVICES, [
+AC_MSG_CHECKING(for i_devices in struct inode)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_cdev,
+[
+AC_TRY_COMPILE(
+[#include <linux/fs.h>],
+[struct inode _inode;
+printf("%d\n", _inode.i_devices);],
+ac_cv_linux_fs_struct_inode_has_i_devices=yes,
+ac_cv_linux_fs_struct_inode_has_i_devices=no)])
+AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_devices)
+CPPFLAGS="$save_CPPFLAGS"])
+
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/cmd/cmd.c,v 1.1.1.7 2001/09/20 06:13:01 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/cmd/cmd.c,v 1.1.1.8 2001/10/14 18:04:23 hartmans Exp $");
#include <sys/types.h>
#include <ctype.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/cmd/test/itest.c,v 1.1.1.5 2001/09/20 06:13:02 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/cmd/test/itest.c,v 1.1.1.6 2001/10/14 18:04:24 hartmans Exp $");
#include "cmd.h"
#include <stdio.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/compile_et.c,v 1.1.1.5 2001/09/20 06:13:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/compile_et.c,v 1.1.1.6 2001/10/14 18:04:25 hartmans Exp $");
#include <stdio.h>
#include <stdlib.h>
fprintf (hfile, "#define ERROR_TABLE_BASE_%s (%ldL)\n",
lcname, (long int) table_number);
fprintf (hfile, "#define init_%s_err_tbl initialize_%s_error_table\n",
- lcname, lcname);
+ lcname, table_name);
+ fprintf (hfile, "#define initialize_%s_error_table initialize_%s_error_table\n",
+ lcname, table_name);
fprintf (hfile, "#define %s_err_base ERROR_TABLE_BASE_%s\n", lcname,
lcname);
fclose(hfile); /* bye bye include file */
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/error_table.y,v 1.1.1.5 2001/09/20 06:13:04 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/error_table.y,v 1.1.1.6 2001/10/14 18:04:26 hartmans Exp $");
/*
*
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/error_table_nt.c,v 1.1.1.4 2001/09/20 06:13:05 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/error_table_nt.c,v 1.1.1.5 2001/10/14 18:04:26 hartmans Exp $");
/*
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/test/test.c,v 1.1.1.4 2001/09/20 06:13:06 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/comerr/test/test.c,v 1.1.1.5 2001/10/14 18:04:27 hartmans Exp $");
#include <stdio.h>
#include <errno.h>
AFS_component_version_number.c
Makefile
-Makefile.i386_linux24
+Makefile.*_*[0123456789]
Makefile.version
Makefile.version-NOCML
afsconfig.h
afsconfig.h.in
config
mkvers
+Makefile.hp_ux102
+Makefile.hp_ux110
+Makefile.i386_linux22
+Makefile.i386_linux24
+Makefile.sun4x_56
+Makefile.sun4x_57
OPTMZ=-O2
#PAM_CFLAGS = -O2 -Dlinux -DLINUX_PAM -fPIC
# Put -O2 here to _ensure_ all Makefiles pick it up.
-XCFLAGS= ${DBG} -Dfds_bits=fd_bits
+XCFLAGS= ${DBG} -Dfds_bits=fd_bits -DAFS_AFSDB_ENV -DAFS_FREELANCE_CLIENT
MT_CFLAGS=${XCFLAGS}
XLDFLAGS=
SHARE_LDFLAGS = -shared -Xlinker -x
#
#
# compilation and link editor flags
-XCFLAGS=-traditional-cpp
+XCFLAGS=-no-precomp
#MT_CFLAGS=-D_REENTRANT -DAFS_PTHREAD_ENV ${XCFLAGS}
#MT_CC=cc
KROOT=
KINCLUDES=-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers
#SHARE_LDFLAGS =
-LWP_OPTMZ=-g
-OPTMZ=-g
+LWP_OPTMZ=-O2
+OPTMZ=-O2
DBG=-g
REGEX_OBJ=regex.o
RANLIB=ranlib
RM=rm
INSTALL=${TOP_SRCDIR}/pinstall/pinstall
-#
-# This is the XBSA make flag and pathname to XBSA header files (xbsa.h)
-XBSA_FLAGS=-Dxbsa
-XBSADIR=/usr/tivoli/tsm/client/api/bin/xopen
FS_CONV_SOL26 = fs_conv_sol26
install_FS_CONV_SOL26 = $(DESTDIR)${afssrvsbindir}/fs_conv_sol26
dest_FS_CONV_SOL26 = $(DEST)/root.server/usr/afs/bin/fs_conv_sol26
-#
-# This is the XBSA make flag and pathname to XBSA header files (xbsa.h)
-XBSA_FLAGS=-Dxbsa
-XBSADIR=/opt/tivoli/tsm/client/api/bin/xopen
FS_CONV_SOL26 = fs_conv_sol26
install_FS_CONV_SOL26 = $(DESTDIR)${afssrvsbindir}/fs_conv_sol26
dest_FS_CONV_SOL26 = $(DEST)/root.server/usr/afs/bin/fs_conv_sol26
-#
-# This is the XBSA make flag and pathname to XBSA header files (xbsa.h)
-XBSA_FLAGS=-Dxbsa
-XBSADIR=/opt/tivoli/tsm/client/api/bin/xopen
FS_CONV_SOL26 = fs_conv_sol26
install_FS_CONV_SOL26 = $(DESTDIR)${afssrvsbindir}/fs_conv_sol26
dest_FS_CONV_SOL26 = $(DEST)/root.server/usr/afs/bin/fs_conv_sol26
-#
-# This is the XBSA make flag and pathname to XBSA header files (xbsa.h)
-XBSA_FLAGS=-Dxbsa
-XBSADIR=/opt/tivoli/tsm/client/api/bin/xopen
-I$(DESTDIR)\include\rx \
-DWIN32_LEAN_AND_MEAN \
-DSTRICT \
- -D_WIN32_IE=0x0400
+ -D_WIN32_IE=0x0400 \
+ -DAFS_AFSDB_ENV \
+ -DAFS_FREELANCE_CLIENT
afscdefs = $(afscdefs) $(AFSDEV_AUXCDEFINES)
-I$(DESTDIR)\include\rx \
-DWIN32_LEAN_AND_MEAN \
-DSTRICT \
- -D_WIN32_IE=0x0400
+ -D_WIN32_IE=0x0400 \
+ -DAFS_AFSDB_ENV \
+ -DAFS_FREELANCE_CLIENT
! IF ((EXIST($(MSSDK)\include)) && (("$(SYS_NAME)"=="i386_win95" ) || ("$(SYS_NAME)"=="I386_WIN95" )))
afscdefs=$(afscdefs) -I$(MSSDK)\include $(afscppdefs) \
#define AFSOP_ADDCELL2 29 /* 2nd add cell protocol interface */
#define AFSOP_AFSDB_HANDLER 30 /* userspace AFSDB lookup handler */
+#define AFSOP_SET_DYNROOT 31 /* enable/disable dynroot support */
/* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
#define AFSCALL_PIOCTL 20
/* #define AFSOP_STOP_RXEVENT 214 defined in osi.h */
/* #define AFSOP_STOP_COMPLETE 215 defined in osi.h */
/* #define AFSOP_STOP_RXK_LISTENER 217 defined in osi.h */
+#define AFSOP_STOP_AFSDB 218 /* Stop AFSDB handler */
/* Main afs syscall entry; this number may vary per system (i.e. defined in afs/param.h) */
#ifndef AFS_SYSCALL
#define SYS_NAME_ID_sunx86_55 937
#define SYS_NAME_ID_sun4x_57 938
#define SYS_NAME_ID_sun4x_58 939
+#define SYS_NAME_ID_sun4x_59 940
/* Sigh. If I leave a gap here IBM will do this sequentially. If I don't
they won't allocate sunx86 IDs at all. So leave a gap and pray. */
#define SYS_NAME_ID_ia64_linux22 2201
#define SYS_NAME_ID_ia64_linux24 2202
+#define SYS_NAME_ID_m68k_linux22 2301
+#define SYS_NAME_ID_m68k_linux24 2302
+
+#define SYS_NAME_ID_parisc_linux22 2401
+#define SYS_NAME_ID_parisc_linux24 2402
+
/*
* Placeholder to keep system-wide standard flags since this file is included by all
* files (i.e in afs/param.h)
#undef HAVE_RES_SEARCH
//#undef HAVE_SOCKET
-#if ENDIANESS_IN_SYS_PARAM_H
+#ifdef ENDIANESS_IN_SYS_PARAM_H
# ifndef KERNEL
# include <sys/types.h>
# include <sys/param.h>
# endif
#endif
-#undef AFS_AFSDB_ENV
+/*#undef AFS_AFSDB_ENV*/
+#define AFS_AFSDB_ENV 1
#undef AFS_NAMEI_ENV
#undef BOS_RESTRICTED_MODE
main(int argc, char **argv)
{
- int n = 0;
char stampsFile[1024];
char stateFile[1024];
char s[1024];
- char *p;
int i;
char *baseDir;
int argDir = 0;
char *outputFile = NULL;
char outputFileBuf[sizeof(VERS_FILE) + 2];
struct stat sbuf;
- time_t versTime, stampsTime, stateTime;
+ time_t versTime;
int reBuild = 0;
int code;
char *cml_prefix = NULL;
#define vfs_fsid mnt_stat.f_fsid
#define va_nodeid va_fileid
#define vfs_vnodecovered mnt_vnodecovered
-#define direct dirent
#define vnode_t struct vnode
+#define setgroups sys_setgroups
#ifndef MUTEX_DEFAULT
#define MUTEX_DEFAULT 0
#define DEBUG 1
#define AFS_SGI_DUAL_FS_CACHE 1 /* implies supports EFS or XFS cache */
+
+#define memset(A, B, S) bzero(A, S)
+#define memcpy(B, A, S) bcopy(A, B, S)
+#define memcmp(A, B, S) bcmp(A, B, S)
+
#endif /* KERNEL */
#ifndef CMSERVERPREF
#define AFS_EVENT_LOCK 1 /* osi_Sleep/osi_Wakeup use spinlock. */
#define AFS_SGI_DUAL_FS_CACHE 1 /* implies supports EFS or XFS cache */
+#define memset(A, B, S) bzero(A, S)
+#define memcpy(B, A, S) bcopy(A, B, S)
+#define memcmp(A, B, S) bcmp(A, B, S)
+
#endif /* KERNEL */
#ifndef CMSERVERPREF
#define AFS_EVENT_LOCK 1 /* osi_Sleep/osi_Wakeup use spinlock. */
#define AFS_SGI_DUAL_FS_CACHE 1 /* implies supports EFS or XFS cache */
+#define memset(A, B, S) bzero(A, S)
+#define memcpy(B, A, S) bcopy(A, B, S)
+#define memcmp(A, B, S) bcmp(A, B, S)
+
#endif /* KERNEL */
#ifndef CMSERVERPREF
#define AFS_EVENT_LOCK 1 /* osi_Sleep/osi_Wakeup use spinlock. */
#define AFS_SGI_DUAL_FS_CACHE 1 /* implies supports EFS or XFS cache */
+#define memset(A, B, S) bzero(A, S)
+#define memcpy(B, A, S) bcopy(A, B, S)
+#define memcmp(A, B, S) bcmp(A, B, S)
+
#endif /* KERNEL */
#ifndef CMSERVERPREF
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/dauth/dlog.c,v 1.1.1.7 2001/09/20 06:13:21 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/dauth/dlog.c,v 1.1.1.8 2001/10/14 18:04:42 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include "conf-i386-obsd.h"
#else
#if defined(AFS_LINUX20_ENV) || defined(AFS_DJGPP_ENV)
+#ifdef AFS_PARISC_LINUX20_ENV
+#include "conf-parisc-linux.h"
+#else
#ifdef AFS_PPC_LINUX20_ENV
#include "conf-ppc-linux.h"
#else
#endif /* AFS_S390_LINUX20_ENV */
#endif /* AFS_SPARC64_LINUX20_ENV */
#endif /* AFS_SPARC_LINUX20_ENV */
-#endif
+#endif /* AFS_PPC_LINUX20_ENV */
+#endif /* AFS_PARISC_LINUX24_ENV */
#else
#if defined(AFS_DARWIN_ENV) && defined(AFS_PPC_ENV)
#include "conf-ppc-darwin.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/des/main.c,v 1.1 2001/09/11 14:32:31 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/des/main.c,v 1.1.1.2 2001/10/14 18:04:47 hartmans Exp $");
#include <mit-cpyright.h>
#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+
#include "des_internal.h"
extern void gen PROTOTYPE((FILE * stream));
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/des/make_ip.c,v 1.1.1.4 2001/07/14 22:21:33 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/des/make_ip.c,v 1.1.1.5 2001/10/14 18:04:47 hartmans Exp $");
#include <mit-cpyright.h>
#include <stdio.h>
+#include <stdlib.h>
#include "des_internal.h"
#define WANT_IP_TABLE
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/des/read_pssword.c,v 1.1.1.7 2001/09/20 06:13:27 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/des/read_pssword.c,v 1.1.1.8 2001/10/14 18:04:48 hartmans Exp $");
#include <mit-cpyright.h>
#include <des.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/dir/buffer.c,v 1.1.1.6 2001/09/20 06:13:28 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/dir/buffer.c,v 1.1.1.7 2001/10/14 18:04:51 hartmans Exp $");
#include <stdlib.h>
#include <lock.h>
};
struct DirHeader
- {/* A directory header object.
- */struct PageHeader header;
+ {/* A directory header object. */
+ struct PageHeader header;
char alloMap[MAXPAGES]; /* one byte per 2K page */
unsigned short hashTable[NHASHENT];
};
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/dir/salvage.c,v 1.1.1.6 2001/09/20 06:14:44 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/dir/salvage.c,v 1.1.1.7 2001/10/14 18:04:52 hartmans Exp $");
#include <sys/types.h>
#include <errno.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/finale/translate_et.c,v 1.1.1.6 2001/09/20 06:14:46 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/finale/translate_et.c,v 1.1.1.7 2001/10/14 18:04:54 hartmans Exp $");
#include <afs/com_err.h>
#include <rx/rxkad.h>
afs_uint32 Group;
afs_uint32 SyncCounter;
afs_uint32 dataVersionHigh; /* For AFS/DFS translator, hi bits of dvn */
- afs_uint32 spare2;
+ afs_uint32 lockCount;
afs_uint32 spare3;
- afs_uint32 spare4;
+ afs_uint32 errorCode;
};
struct AFSStoreStatus {
IN struct ResidencyCmdInputs *Inputs,
OUT struct ResidencyCmdOutputs *Outputs
) = 220;
+
+InlineBulkStatus(
+ IN AFSCBFids *FidsArray,
+ OUT AFSBulkStats *StatArray,
+ AFSCBs *CBArray,
+ AFSVolSync *Sync
+) = 65536;
$(DESTDIR)\lib\afsrx.lib \
$(DESTDIR)\lib\afsubik.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
- $(DESTDIR)\lib\afsrxkad.lib
+ $(DESTDIR)\lib\afsrxkad.lib \
+ $(DESTDIR)\lib\cm_dns.obj
TOKENLIB = $(DESTDIR)\lib\afs\afspioctl.lib
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/admin_tools.c,v 1.1.1.9 2001/09/20 06:14:54 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/admin_tools.c,v 1.1.1.10 2001/10/14 18:05:03 hartmans Exp $");
#include <afs/stds.h>
#include <afs/debug.h>
printf ("Converting %s with the DES string to key yields key='",
as->parms[0].items->data);
- ka_PrintBytes (&key, sizeof(key));
+ ka_PrintBytes ((char *)&key, sizeof(key));
printf ("'.\n");
return 0;
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/authclient.c,v 1.1.1.8 2001/09/20 06:14:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/authclient.c,v 1.1.1.9 2001/10/14 18:05:03 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <sys/socket.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/rxkad.h>
#include <afs/cellconfig.h>
#include <ubik.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/client.c,v 1.1.1.7 2001/09/20 06:14:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/client.c,v 1.1.1.8 2001/10/14 18:05:03 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <winsock2.h>
#include <crypt.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/cellconfig.h>
#include <afs/auth.h>
#include <afs/afsutil.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/decode_ticket.c,v 1.1.1.5 2001/09/20 06:14:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/decode_ticket.c,v 1.1.1.6 2001/10/14 18:05:04 hartmans Exp $");
#include <des.h>
#include <afs/com_err.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kaauxdb.c,v 1.1.1.5 2001/09/20 06:14:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kaauxdb.c,v 1.1.1.6 2001/10/14 18:05:05 hartmans Exp $");
-#include <fcntl.h>
#ifdef AFS_NT40_ENV
-#include <fcntl.h>
#include <io.h>
#else
#include <sys/file.h>
#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/rxkad.h>
#include "ubik_int.h"
#include "kauth.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kadatabase.c,v 1.1.1.5 2001/09/11 14:32:54 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kadatabase.c,v 1.1.1.6 2001/10/14 18:05:05 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#else
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <lock.h>
#include <ubik.h>
#include <rx/xdr.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kalocalcell.c,v 1.1.1.5 2001/07/14 22:22:11 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kalocalcell.c,v 1.1.1.6 2001/10/14 18:05:05 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/pthread_glock.h"
#else
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/cellconfig.h>
#include <rx/xdr.h>
#include <rx/rx.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kalog.c,v 1.1.1.4 2001/07/14 22:22:10 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kalog.c,v 1.1.1.5 2001/10/14 18:05:06 hartmans Exp $");
#include <stdio.h>
#include <afs/afsutil.h>
-#ifndef AFS_NT40_ENV
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
+#endif
+#ifdef HAVE_FCNTL_H
#include <fcntl.h>
+#endif
#include <sys/types.h>
#include <time.h>
#include <signal.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kaprocs.c,v 1.1.1.8 2001/09/20 06:14:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kaprocs.c,v 1.1.1.9 2001/10/14 18:05:06 hartmans Exp $");
#include <afs/stds.h>
#include <errno.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kas.c,v 1.1.1.5 2001/09/20 06:14:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kas.c,v 1.1.1.6 2001/10/14 18:05:06 hartmans Exp $");
#include <afs/stds.h>
#ifdef AFS_AIX32_ENV
#else
#include <WINNT/afsevent.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/cellconfig.h>
#include <afs/com_err.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kaserver.c,v 1.1.1.8 2001/09/20 06:14:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kaserver.c,v 1.1.1.9 2001/10/14 18:05:07 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#ifdef AFS_NT40_ENV
-#include <fcntl.h>
#include <winsock2.h>
#include <WINNT/afsevent.h>
#else
#include "kalog.h" /* for OpenLog() */
#include <time.h>
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
#ifdef AFS_AIX32_ENV
#include <signal.h>
#endif
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kautils.c,v 1.1.1.6 2001/09/11 14:32:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kautils.c,v 1.1.1.7 2001/10/14 18:05:07 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/file.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <time.h>
#include <stdio.h>
#include <ctype.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/klog.c,v 1.1.1.5 2001/09/11 14:32:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/klog.c,v 1.1.1.6 2001/10/14 18:05:08 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#ifdef AFS_AIX32_ENV
#include <signal.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <lock.h>
#include <ubik.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/klogin.c,v 1.1.1.7 2001/09/20 06:15:00 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/klogin.c,v 1.1.1.8 2001/10/14 18:05:08 hartmans Exp $");
#if !defined(AFS_SUN_ENV) && !defined(AFS_AIX_ENV) && !defined(AFS_HPUX_ENV) && !defined(AFS_SGI_ENV) && !defined(AFS_SUN5_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV)
#include <sys/param.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kpasswd.c,v 1.1.1.6 2001/09/11 14:33:00 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kpasswd.c,v 1.1.1.7 2001/10/14 18:05:09 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#ifndef AFS_NT40_ENV
#include <pwd.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <signal.h>
#include <afs/com_err.h>
#include <afs/auth.h>
code = ka_Init(0);
if (code ||
!(lcell = ka_LocalCell())) {
+#ifndef AFS_FREELANCE_CLIENT
if (!Pipe) com_err (rn, code , "Can't get local cell name!");
exit (1);
+#endif
}
code = rx_Init(0);
memset(as->parms[aNEWPASSWORD].items->data, 0, strlen(as->parms[aNEWPASSWORD].items->data));
}
+#ifdef AFS_FREELANCE_CLIENT
+ if (!foundExplicitCell && !lcell) {
+ if (!Pipe) com_err (rn, code, "no cell name provided");
+ exit(1);
+ }
+#else
if (!foundExplicitCell) strcpy (realm, lcell);
+#endif /* freelance */
+
if (code = ka_CellToRealm (realm, realm, &local)) {
if (!Pipe) com_err (rn, code, "Can't convert cell to realm");
exit (1);
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kpwvalid.c,v 1.1.1.4 2001/07/14 22:22:15 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/kpwvalid.c,v 1.1.1.5 2001/10/14 18:05:10 hartmans Exp $");
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#ifdef AFS_NT40_ENV
#include <WINNT/afsevent.h>
#endif
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/krb_tf.c,v 1.1.1.4 2001/07/14 22:22:16 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/krb_tf.c,v 1.1.1.5 2001/10/14 18:05:10 hartmans Exp $");
-#ifdef AFS_NT40_ENV
+#ifdef HAVE_FCNTL_H
#include <fcntl.h>
+#endif
+#ifdef AFS_NT40_ENV
#include <io.h>
#else
#include <sys/file.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <sys/types.h>
#include <rx/xdr.h>
#include <errno.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/krb_udp.c,v 1.1.1.10 2001/09/20 06:15:00 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/krb_udp.c,v 1.1.1.11 2001/10/14 18:05:10 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <netdb.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/afsutil.h>
#include <time.h>
#include <afs/com_err.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/rebuild.c,v 1.1.1.8 2001/09/20 06:15:01 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/rebuild.c,v 1.1.1.9 2001/10/14 18:05:11 hartmans Exp $");
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <stdio.h>
#include <errno.h>
#include <time.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/test/test_getticket.c,v 1.1.1.6 2001/09/20 06:15:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/test/test_getticket.c,v 1.1.1.7 2001/10/14 18:05:13 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/test/test_interim_ktc.c,v 1.1.1.6 2001/09/20 06:15:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/test/test_interim_ktc.c,v 1.1.1.7 2001/10/14 18:05:13 hartmans Exp $");
#include <afs/stds.h>
#include <afs/com_err.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/test/test_rxkad_free.c,v 1.1.1.6 2001/09/20 06:15:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/test/test_rxkad_free.c,v 1.1.1.7 2001/10/14 18:05:13 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/token.c,v 1.1.1.5 2001/09/20 06:15:01 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/token.c,v 1.1.1.6 2001/10/14 18:05:11 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <sys/socket.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
/* netinet/in.h and cellconfig.h are needed together */
#include <afs/cellconfig.h>
/* these are needed together */
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/user.c,v 1.1.1.8 2001/09/20 06:15:02 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/user.c,v 1.1.1.9 2001/10/14 18:05:11 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#else
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/cellconfig.h>
#include <afs/auth.h>
#include <afs/ptint.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/user_nt.c,v 1.1.1.6 2001/09/11 14:33:02 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/kauth/user_nt.c,v 1.1.1.7 2001/10/14 18:05:12 hartmans Exp $");
#include <afs/stds.h>
char fullRealm[256];
char upperRealm[256];
struct servent *sp;
+ int ttl;
struct ktc_principal server;
struct ktc_principal client;
code = cm_SearchCellFile(realm, fullRealm, ka_AddHostProc, NULL);
+#ifdef AFS_AFSDB_ENV
+ if (code) {
+ code = cm_SearchCellByDNS(realm, fullRealm, &ttl, ka_AddHostProc, NULL);
+ }
+#endif
if (code) {
*reasonP = "specified realm is unknown";
return (code);
ptr = (char *) cip->dat + 8;
/* Check and extract server's name */
- if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length)
+ if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length) {
return(INTK_BADPW);
+ }
(void) strncpy(s_service, ptr, sizeof(s_service)-1);
s_service[sizeof(s_service)-1] = '\0';
ptr += strlen(s_service) + 1;
/* Check and extract server's instance */
- if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length)
+ if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length) {
return(INTK_BADPW);
+ }
(void) strncpy(s_instance,ptr, sizeof(s_instance)-1);
s_instance[sizeof(s_instance)-1] = '\0';
ptr += strlen(s_instance) + 1;
/* Check and extract server's realm */
- if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length)
+ if ((strlen(ptr) + (ptr - (char *) cip->dat)) > cip->length) {
return(INTK_BADPW);
+ }
(void) strncpy(s_realm,ptr, sizeof(s_realm));
s_realm[sizeof(s_realm)-1] = '\0';
ticket_len = (unsigned char) *ptr++;
if ((ticket_len < 0) ||
- ((ticket_len + (ptr - (char *) cip->dat)) > (int) cip->length))
+ ((ticket_len + (ptr - (char *) cip->dat)) > (int) cip->length)) {
return(INTK_BADPW);
+ }
/* Check returned server name, instance, and realm fields */
/*
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/libacl/aclprocs.c,v 1.1.1.7 2001/09/20 06:15:05 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/libacl/aclprocs.c,v 1.1.1.8 2001/10/14 18:05:15 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/libadmin/adminutil/afs_utilAdmin.c,v 1.1.1.6 2001/09/20 06:15:11 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/libadmin/adminutil/afs_utilAdmin.c,v 1.1.1.7 2001/10/14 18:05:28 hartmans Exp $");
#include <afs/stds.h>
#include <afs/afs_Admin.h>
-MODLOAD-2.4.7-ac3-MP
-MODLOAD-2.4.7-ac3-SP
+MODLOAD-*
+MODLOAD32
+MODLOAD64
Makefile
+MakefileProto.AIX
+MakefileProto.DARWIN
+MakefileProto.DUX
+MakefileProto.FBSD
+MakefileProto.HPUX
+MakefileProto.IRIX
MakefileProto.LINUX
+MakefileProto.OBSD
+MakefileProto.SOLARIS
afs
afsint
config
#/* Copyright (C) 1995, 1989 Transarc Corporation - All rights reserved */
-# $Header: /tmp/cvstemp/openafs/src/libafs/MakefileProto.DARWIN.in,v 1.1.1.3 2001/09/20 06:15:23 hartmans Exp $
+# $Header: /tmp/cvstemp/openafs/src/libafs/MakefileProto.DARWIN.in,v 1.1.1.4 2001/10/14 18:05:40 hartmans Exp $
#
# MakefileProto for Digital Unix systems
#
# System specific build commands and flags
KDEFS=
-DBUG = -g
+DBUG =
DEFINES= -D_KERNEL -DKERNEL -DKERNEL_PRIVATE -DDIAGNOSTIC -DUSE_SELECT -DMACH_USER_API -DMACH_KERNEL
-OPTF=${OPT}
-OPTF2=${OPT2}
-KOPTS=-traditional-cpp -static -fno-common -finline -fno-keep-inline-functions -force_cpusubtype_ALL -msoft-float -mlong-branch
+KOPTS=-no-precomp -static -fno-common -finline -fno-keep-inline-functions -force_cpusubtype_ALL -msoft-float -mlong-branch
#CFLAGS=-Werror-implicit-function-declaration -I. -I.. ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
#CFLAGS=-framework Kernel -I. -I.. ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
-CFLAGS=-I. -I.. -I${TOP_SRCDIR}/config ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
+CFLAGS=-I. -I.. -I${TOP_SRCDIR}/config ${KINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG} ${OPTMZ}
# Name of directory to hold object files and libraries.
LIBAFS = libafs.o
LIBAFSNONFS = libafs.nonfs.o
-INST_LIBAFS ${DESTDIR}${afskerneldir}/${LIBAFS}
+INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/${LIBAFSNONFS}
DEST_LIBAFS = ${DEST}/root.client/bin/${LIBAFS}
KDEFS= -Dsun4c -DSUN4C_60 -DNFSCLIENT -DSYSACCT -DOLDSCSI -DVDDRV -D_KERNEL \
-DSYSV -dn ${ARCH_DEFS}
-<sun4x_57 sun4x_58>
+<sun4x_57 sun4x_58 sun4x_59>
KDEFS_32 =
KDEFS_64 = -xarch=v9
CFLAGS=-I. -I.. -I${TOP_SRCDIR}/config ${FSINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
# Name of directory to hold object files and libraries.
-<all -sun4x_57 -sun4x_58>
+<all -sun4x_57 -sun4x_58 -sun4x_59>
KOBJ = MODLOAD
-<sun4x_57 sun4x_58>
+<sun4x_57 sun4x_58 sun4x_59>
KOBJ = MODLOAD32 MODLOAD64
# This tells Makefile.common to use it's single directory build target.
-<all -sun4x_57 -sun4x_58>
+<all -sun4x_57 -sun4x_58 -sun4x_59>
COMPDIRS = single_compdir
INSTDIRS = single_instdir
DESTDIRS = single_destdir
-<sun4x_57 sun4x_58>
+<sun4x_57 sun4x_58 sun4x_59>
COMPDIRS = solaris_compdirs
INSTDIRS = solaris_instdirs
DESTDIRS = solaris_destdirs
## This is the target for a Solaris 7. Here we build both the 32 bit and
## the 64 bit libafs in MODLOAD32 and MODLOAD64 directories respectively
-<sun4x_57 sun4x_58>
+<sun4x_57 sun4x_58 sun4x_59>
${COMPDIRS} ${INSTDIRS} ${DESTDIRS}:
for t in ${KOBJ} ; do \
echo Building directory: $$t ; \
LIBAFS = libafs.o
LIBAFSNONFS = libafs.nonfs.o
-<all -sun4x_57 -sun4x_58>
+<all -sun4x_57 -sun4x_58 -sun4x_59>
INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
INST_LIBAFSNONFS = ${DESTDIR}${afskerneldir}/${LIBAFSNONFS}
$(RM) -f $@
$(LD) -r -o $@ $(AFSAOBJS) ${AFSNONFSOBJS}
-<sun4x_57 sun4x_58>
+<sun4x_57 sun4x_58 sun4x_59>
libafs: ${LIBAFSNONFS}
$(SYSOBJS) \
$(WINNTAFSDOBJS) \
$(AUDITOBJS) \
+ $(DESTDIR)\lib\cm_dns.obj \
afsauthent.res
audit.obj: $(AUDIT)\audit.c
install9x: install
clean ::
- $(DEL) $(LIBFILE)
\ No newline at end of file
+ $(DEL) $(LIBFILE)
$(UOBJ)/afs_daemons.o \
$(UOBJ)/afs_dcache.o \
$(UOBJ)/afs_dir.o \
+ $(UOBJ)/afs_dynroot.o \
$(UOBJ)/afs_init.o \
$(UOBJ)/afs_lock.o \
$(UOBJ)/afs_mariner.o \
$(WEBOBJ)/afs_daemons.o \
$(WEBOBJ)/afs_dcache.o \
$(WEBOBJ)/afs_dir.o \
+ $(WEBOBJ)/afs_dynroot.o \
$(WEBOBJ)/afs_init.o \
$(WEBOBJ)/afs_lock.o \
$(WEBOBJ)/afs_mariner.o \
$(WEBOBJ)/afs_daemons.o \
$(WEBOBJ)/afs_dcache.o \
$(WEBOBJ)/afs_dir.o \
+ $(WEBOBJ)/afs_dynroot.o \
$(WEBOBJ)/afs_init.o \
$(WEBOBJ)/afs_lock.o \
$(WEBOBJ)/afs_mariner.o \
$(CRULE1);
$(UOBJ)/afs_dcache.o: $(AFS)/afs_dcache.c
$(CRULE1);
+$(UOBJ)/afs_dynroot.o: $(AFS)/afs_dynroot.c
+ $(CRULE1);
$(UOBJ)/afs_init.o: $(AFS)/afs_init.c
$(CRULE1);
$(UOBJ)/afs_mariner.o: $(AFS)/afs_mariner.c
$(CRULE2);
$(WEBOBJ)/afs_dcache.o: $(AFS)/afs_dcache.c
$(CRULE2);
+$(WEBOBJ)/afs_dynroot.o: $(AFS)/afs_dynroot.c
+ $(CRULE2);
$(WEBOBJ)/afs_init.o: $(AFS)/afs_init.c
$(CRULE2);
$(WEBOBJ)/afs_mariner.o: $(AFS)/afs_mariner.c
${TOP_LIBDIR}/librxkad.a ${TOP_LIBDIR}/libsys.a \
${TOP_LIBDIR}/libdes.a ${TOP_LIBDIR}/librx.a \
${TOP_LIBDIR}/liblwp.a ${TOP_LIBDIR}/libcmd.a \
- ${TOP_LIBDIR}/afs/libcom_err.a ${TOP_LIBDIR}/afs/util.a
+ ${TOP_LIBDIR}/libcom_err.a ${TOP_LIBDIR}/util.a
KAFSLIBS = ${TOP_LIBDIR}/libkauth.krb.a ${TOP_LIBDIR}/libprot.a \
${TOP_LIBDIR}/libubik.a ${TOP_LIBDIR}/libauth.krb.a \
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/lwp/waitkey.c,v 1.1.1.9 2001/09/20 06:15:32 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/lwp/waitkey.c,v 1.1.1.10 2001/10/14 18:05:48 hartmans Exp $");
#include <stdio.h>
#include <sys/types.h>
+AFS_component_version_number.c
Makefile
#include <afs/param.h>
#include <sys/wait.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/pam/afs_util.c,v 1.1.1.5 2001/09/11 14:34:02 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/pam/afs_util.c,v 1.1.1.6 2001/10/14 18:06:06 hartmans Exp $");
#include "afs_util.h"
{
assert(0);
}
-#endif /* AFS_HPUX110_ENV */
+
sigsetmask(int mask)
{
assert(0);
}
+#endif /* AFS_HPUX110_ENV */
/* converts string to integer */
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/pinstall/install.c,v 1.1.1.7 2001/09/20 06:15:51 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/pinstall/install.c,v 1.1.1.8 2001/10/14 18:06:07 hartmans Exp $");
#include <stdio.h>
#include <pwd.h>
#include <unistd.h>
#include <string.h>
#include <sys/wait.h>
+#include <stdlib.h>
struct stat istat, ostat;
readgroup
readpwd
testpt
+ptclient
$(DESTDIR)\lib\afs\afsutil.lib \
$(DESTDIR)\lib\afs\afsaudit.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
- $(DESTDIR)\lib\afs\afsreg.lib
+ $(DESTDIR)\lib\afs\afsreg.lib \
+ $(DESTDIR)\lib\cm_dns.obj
!IF (("$(SYS_NAME)"!="i386_win95" ) && ("$(SYS_NAME)"!="I386_WIN95" ))
PTSERVER_EXELIBS =$(PTSERVER_EXELIBS) $(DESTDIR)\lib\afs\afsprocmgmt.lib
$(DESTDIR)\lib\afs\afscmd.lib \
$(DESTDIR)\lib\afs\afsreg.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
- $(DESTDIR)\lib\afs\afspioctl.lib
+ $(DESTDIR)\lib\afs\afspioctl.lib \
+ $(DESTDIR)\lib\cm_dns.obj
$(PTS): $(PTS_EXEOBJS) $(PTS_EXELIBS)
$(EXECONLINK)
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/db_verify.c,v 1.1.1.7 2001/09/20 06:15:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/db_verify.c,v 1.1.1.8 2001/10/14 18:06:10 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <sys/file.h>
#endif
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <errno.h>
#include <fcntl.h>
#include <afs/cellconfig.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/display.c,v 1.1.1.5 2001/09/20 06:15:55 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/display.c,v 1.1.1.6 2001/10/14 18:06:10 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptclient.c,v 1.1.1.6 2001/09/20 06:15:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptclient.c,v 1.1.1.7 2001/10/14 18:06:11 hartmans Exp $");
#ifdef AFS_AIX32_ENV
#include <signal.h>
#else
#include <netinet/in.h>
#endif
+#include <netdb.h>
#include <stdio.h>
#include <rx/xdr.h>
#include <rx/rx.h>
prlist alist;
idlist lid;
namelist lnames;
+ struct hostent *hostinfo;
+ struct in_addr *hostaddr;
afs_int32 *ptr;
char *foo;
afs_int32 over;
alist.prlist_val = 0;
}
}
+ else if (!strcmp(op,"lh")) {
+ alist.prlist_len = 0;
+ alist.prlist_val = 0;
+ /* scanf("%d",&id); */
+ if (GetString(name, sizeof(name))) code = PRBADARG;
+ else if (!(hostinfo = gethostbyname(name))) code = PRBADARG;
+ else {
+ hostaddr = hostinfo->h_addr_list[0];
+ id = ntohl(hostaddr->s_addr);
+ code = ubik_Call(PR_GetHostCPS,pruclient,0,id, &alist, &over);
+ }
+ if (CodeOk(code)) printf("%s\n",pr_ErrorMsg(code));
+ if (code == PRSUCCESS) {
+ ptr = alist.prlist_val;
+ if (over) {
+ printf("Number of groups greater than PR_MAXGROUPS!\n");
+ printf("Excess of %d.\n",over);
+ }
+ for (i=0;i<alist.prlist_len;i++,ptr++)
+ printf("%d\n",*ptr);
+ free(alist.prlist_val);
+ alist.prlist_len = 0;
+ alist.prlist_val = 0;
+ }
+ }
else if (!strcmp(op,"nu")) {
/* scanf("%s",name); */
if (GetString (name, sizeof(name))) code = PRBADARG;
printf("dg gid - delete the entry for group gid.\n");
printf("rm id gid - remove user id from group gid.\n");
printf("l id - get the CPS for id.\n");
+ printf("lh host - get the host CPS for host.\n");
printf("nu name - create new user with name - returns an id.\n");
printf("ng name - create new group with name - returns an id.\n");
printf("lm - list max user id and max (really min) group id.\n");
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptprocs.c,v 1.1.1.7 2001/09/20 06:15:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptprocs.c,v 1.1.1.8 2001/10/14 18:06:11 hartmans Exp $");
#include <afs/stds.h>
#include <ctype.h>
#ifdef AFS_NT40_ENV
#include <winsock2.h>
#else
-#include <strings.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include "ptserver.h"
#include "pterror.h"
#include "afs/audit.h"
goto done; /* no longer supported */
}
else if (code == 2) { /* kad class */
- if (code = rxkad_GetServerInfo
+ if ((code = rxkad_GetServerInfo
(acall->conn, (afs_int32 *) 0, 0/*was &exp*/,
- name, inst, tcell, (afs_int32 *) 0))
+ name, inst, tcell, (afs_int32 *) 0)))
goto done;
#if 0
/* This test is unnecessary, since rxkad_GetServerInfo already check.
ABORT_WITH(tt,PRPERM);
aentry->flags = tentry.flags >> PRIVATE_SHIFT;
- if (aentry->flags == 0)
+ if (aentry->flags == 0) {
if (tentry.flags & PRGRP)
aentry->flags = PRP_GROUP_DEFAULT >> PRIVATE_SHIFT;
else aentry->flags = PRP_USER_DEFAULT >> PRIVATE_SHIFT;
+ }
aentry->owner = tentry.owner;
aentry->id = tentry.id;
strncpy(aentry->name,tentry.name,PR_MAXNAMELEN);
register char *s;
{
register int tc;
- while (tc = *s) {
+ while ((tc = *s)) {
if (isupper(tc)) *s = tolower(tc);
s++;
}
int size = 0, i, code;
int added = 0;
- while (host = (host & wild)) {
+ while ((host = (host & wild))) {
wild = htonl ( ntohl(wild) << 8) ;
iaddr.s_addr = host;
code = NameToID(tt, inet_ntoa(iaddr),&hostid);
added += wlist.prlist_len;
for (i=0; i< wlist.prlist_len; i++) {
if (!inCPS(*alist,wlist.prlist_val[i]))
- if (code = AddToPRList (alist, &size, wlist.prlist_val[i] )) {
+ if ((code = AddToPRList (alist, &size, wlist.prlist_val[i] ))) {
free(wlist.prlist_val);
return(code);
}
int clen;
extern char *pr_realmName;
- if (code = rxkad_GetServerInfo
+ if ((code = rxkad_GetServerInfo
(acall->conn, (afs_int32 *) 0, 0/*was &exp*/,
- name, inst, tcell, (afs_int32 *) 0))
+ name, inst, tcell, (afs_int32 *) 0)))
goto done;
strncpy (vname, name, sizeof(vname));
- if (ilen = strlen (inst)) {
+ if ((ilen = strlen(inst))) {
if (strlen(vname) + 1 + ilen >= sizeof(vname)) goto done;
strcat (vname, ".");
strcat (vname, inst);
}
- if (clen = strlen (tcell)){
+ if ( (clen = strlen(tcell))) {
#if defined(AFS_ATHENA_STDENV) || defined(AFS_KERBREALM_ENV)
static char local_realm[AFS_REALM_SZ] = "";
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/pts.c,v 1.1.1.6 2001/07/14 22:23:18 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/pts.c,v 1.1.1.7 2001/10/14 18:06:12 hartmans Exp $");
#include <stdio.h>
#include <string.h>
{
register afs_int32 code;
register struct cmd_syndesc *ts;
+#ifdef WIN32
+ WSADATA WSAjunk;
+#endif
+#ifdef WIN32
+ WSAStartup(0x0101, &WSAjunk);
+#endif
+
#ifdef AFS_AIX32_ENV
/*
* The following signal action for AIX is necessary so that in case of a
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptuser.c,v 1.1.1.7 2001/09/20 06:15:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptuser.c,v 1.1.1.8 2001/10/14 18:06:13 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <netinet/in.h>
#endif
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/rx.h>
#include <rx/xdr.h>
#include <rx/rxkad.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptutils.c,v 1.1.1.8 2001/09/11 14:34:08 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/ptutils.c,v 1.1.1.9 2001/10/14 18:06:13 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <winsock2.h>
#else
#include <netinet/in.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
+#endif
#include <lock.h>
#include <ubik.h>
#include <rx/xdr.h>
if (ntohl(tentry.flags) & PRGRP) {
if ((tentry.count == 0) && !admin) return PRGROUPEMPTY;
/* terminate prefix at colon if there is one */
- if (prefix = strchr(tentry.name, ':')) *prefix = 0;
+ if ((prefix = strchr(tentry.name, ':'))) *prefix = 0;
}
prefix = tentry.name;
}
}
done:
/* check for legal name with either group rules or user rules */
- if (suffix = strchr(cname, ':')) {
+ if ((suffix = strchr(cname, ':'))) {
/* check for confusing characters */
if (strchr(cname, '\n') || /* restrict so recreate can work */
strchr(suffix+1, ':')) /* avoid multiple colons */
} else {
flags = oid = aid = 0;
}
- if (!(flags & PRACCESS)) /* provide default access */
+ if (!(flags & PRACCESS)) { /* provide default access */
if (flags & PRGRP)
flags |= PRP_GROUP_DEFAULT;
else
flags |= PRP_USER_DEFAULT;
+ }
if (flags & any) return 1;
if (oid) {
afs_int32 nptr;
afs_int32 last; /* addr of last cont. block */
afs_int32 first = 0;
- afs_int32 cloc;
+ afs_int32 cloc = 0;
afs_int32 slot = -1;
if (entry->id == aid) return PRINCONSISTENT;
prlist *alist;
afs_int32 add;
{
- afs_int32 code;
+ afs_int32 code = 0;
afs_int32 i;
struct contentry centry;
afs_int32 nptr;
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/readgroup.c,v 1.1.1.6 2001/09/20 06:15:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/readgroup.c,v 1.1.1.7 2001/10/14 18:06:13 hartmans Exp $");
#include <stdio.h>
-#ifndef AFS_NT40_ENV
-#include <strings.h>
-#else
+#ifdef AFS_NT40_ENV
#include <WINNT/afsevent.h>
#endif
#include <ctype.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/rx.h>
#include <rx/xdr.h>
#include <afs/cellconfig.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/readpwd.c,v 1.1.1.5 2001/09/11 14:34:09 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/readpwd.c,v 1.1.1.6 2001/10/14 18:06:13 hartmans Exp $");
#include <stdio.h>
-#ifndef AFS_NT40_ENV
-#include <strings.h>
-#else
+#ifdef AFS_NT40_ENV
#include <WINNT/afsevent.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/rx.h>
#include <rx/xdr.h>
#include <afs/cellconfig.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/testpt.c,v 1.1.1.7 2001/09/20 06:15:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/testpt.c,v 1.1.1.8 2001/10/14 18:06:14 hartmans Exp $");
#include <ctype.h>
#include <errno.h>
#include <netdb.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
#include <rx/rx.h>
#include <rx/xdr.h>
#include <afs/rxgen_consts.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/utils.c,v 1.1.1.7 2001/09/20 06:15:59 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ptserver/utils.c,v 1.1.1.8 2001/10/14 18:06:15 hartmans Exp $");
#include <sys/types.h>
#include <lock.h>
#include <netinet/in.h>
#include <netdb.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include "ptserver.h"
#include "pterror.h"
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/IRIX/rx_knet.c,v 1.1.1.5 2001/09/11 14:34:31 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/IRIX/rx_knet.c,v 1.1.1.6 2001/10/14 18:06:27 hartmans Exp $");
#include "../rx/rx_kcommon.h"
#include "../h/tcp-param.h"
{
afs_uint32 ppaddr;
int match_value = 0;
- struct hashbucket *slop;
if (numMyNetAddrs == 0)
(void) rxi_GetIFInfo();
ppaddr = ntohl(addr);
*pifad = (struct in_ifaddr*)&hashinfo_inaddr;
- slop = hash_enum(&hashinfo_inaddr, rxi_MatchIfnet, HTF_INET,
+ (void) hash_enum(&hashinfo_inaddr, rxi_MatchIfnet, HTF_INET,
(caddr_t)&ppaddr, (caddr_t)&match_value, (caddr_t)pifad);
-
- if (slop)
- return ((struct in_ifaddr*)slop)->ia_ifp;
+
+ if (match_value)
+ return (*pifad)->ia_ifp;
else
return NULL;
-
-
}
static int rxi_EnumGetIfInfo(struct hashbucket *h, caddr_t key, caddr_t arg1,
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/SOLARIS/rx_knet.c,v 1.1.1.6 2001/09/11 14:34:32 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/SOLARIS/rx_knet.c,v 1.1.1.7 2001/10/14 18:06:27 hartmans Exp $");
#ifdef AFS_SUN5_ENV
#include "../rx/rx_kcommon.h"
#include "../sys/fcntl.h"
#ifdef AFS_SUN58_ENV
#include "../netinet/ip6.h"
+#define ipif_local_addr ipif_lcl_addr
+#ifndef V4_PART_OF_V6
+#define V4_PART_OF_V6(v6) v6.s6_addr32[3]
+#endif
#endif
#include "../inet/ip.h"
+#include "../inet/ip_if.h"
#include "../netinet/udp.h"
/*
int (*sockfs_sosetsockopt)
(struct sonode *, int, int, void *, int) = NULL;
-int rxi_GetIFInfo()
+static afs_uint32 myNetAddrs[ADDRSPERSITE];
+static int myNetMTUs[ADDRSPERSITE];
+static int numMyNetAddrs = 0;
+
+int
+rxi_GetIFInfo()
{
- return 0;
+ int i = 0;
+ int different = 0;
+
+ ill_t *ill;
+ ipif_t *ipif;
+ int rxmtu, maxmtu;
+
+ int mtus[ADDRSPERSITE];
+ afs_uint32 addrs[ADDRSPERSITE];
+ afs_uint32 ifinaddr;
+
+ memset(mtus, 0, sizeof(mtus));
+ memset(addrs, 0, sizeof(addrs));
+
+ for (ill = ill_g_head; ill; ill = ill->ill_next) {
+#ifdef AFS_SUN58_ENV
+ /* Make sure this is an IPv4 ILL */
+ if (ill->ill_isv6) continue;
+#endif
+
+ /* Iterate over all the addresses on this ILL */
+ for (ipif = ill->ill_ipif; ipif; ipif = ipif->ipif_next) {
+ if (i >= ADDRSPERSITE) break;
+
+ /* Ignore addresses which are down.. */
+ if (!(ipif->ipif_flags & IFF_UP)) continue;
+
+ /* Compute the Rx interface MTU */
+ rxmtu = (ipif->ipif_mtu - RX_IPUDP_SIZE);
+
+ ifinaddr = ntohl(ipif->ipif_local_addr);
+ if (myNetAddrs[i] != ifinaddr)
+ different++;
+
+ /* Copy interface MTU and address; adjust maxmtu */
+ mtus[i] = rxmtu;
+ rxmtu = rxi_AdjustIfMTU(rxmtu);
+ maxmtu = rxmtu * rxi_nRecvFrags + ((rxi_nRecvFrags-1) *
+ UDP_HDR_SIZE);
+ maxmtu = rxi_AdjustMaxMTU(rxmtu, maxmtu);
+ addrs[i] = ifinaddr;
+ i++;
+
+ if (ifinaddr != 0x7f000001 && maxmtu > rx_maxReceiveSize) {
+ rx_maxReceiveSize = MIN( RX_MAX_PACKET_SIZE, maxmtu);
+ rx_maxReceiveSize = MIN( rx_maxReceiveSize,
+ rx_maxReceiveSizeUser);
+ }
+ }
+ }
+
+ rx_maxJumboRecvSize = RX_HEADER_SIZE +
+ rxi_nDgramPackets * RX_JUMBOBUFFERSIZE +
+ (rxi_nDgramPackets-1) * RX_JUMBOHEADERSIZE;
+ rx_maxJumboRecvSize = MAX(rx_maxJumboRecvSize, rx_maxReceiveSize);
+
+ if (different) {
+ int j;
+
+ for (j = 0; j < i; j++) {
+ myNetMTUs[j] = mtus[j];
+ myNetAddrs[j] = addrs[j];
+ }
+ }
+
+ return different;
+}
+
+int
+rxi_FindIfMTU(addr)
+ afs_uint32 addr;
+{
+ ill_t *ill;
+ ipif_t *ipif;
+ afs_uint32 myAddr, netMask;
+ int match_value = 0;
+ int mtu = -1;
+
+ if (numMyNetAddrs == 0)
+ rxi_GetIFInfo();
+ myAddr = ntohl(addr);
+
+ if (IN_CLASSA(myAddr)) netMask = IN_CLASSA_NET;
+ else if (IN_CLASSB(myAddr)) netMask = IN_CLASSB_NET;
+ else if (IN_CLASSC(myAddr)) netMask = IN_CLASSC_NET;
+ else netMask = 0;
+
+ for (ill = ill_g_head; ill; ill = ill->ill_next) {
+#ifdef AFS_SUN58_ENV
+ /* Make sure this is an IPv4 ILL */
+ if (ill->ill_isv6) continue;
+#endif
+
+ /* Iterate over all the addresses on this ILL */
+ for (ipif = ill->ill_ipif; ipif; ipif = ipif->ipif_next) {
+ afs_uint32 thisAddr, subnetMask;
+ int thisMtu;
+
+ thisAddr = ipif->ipif_local_addr;
+ subnetMask = ipif->ipif_net_mask;
+ thisMtu = ipif->ipif_mtu;
+
+ if ((myAddr & netMask) == (thisAddr & netMask)) {
+ if ((myAddr & subnetMask) == (thisAddr & subnetMask)) {
+ if (myAddr == thisAddr) {
+ match_value = 4;
+ mtu = thisMtu;
+ }
+
+ if (match_value < 3) {
+ match_value = 3;
+ mtu = thisMtu;
+ }
+ }
+
+ if (match_value < 2) {
+ match_value = 2;
+ mtu = thisMtu;
+ }
+ }
+ }
+ }
+
+ return mtu;
}
/* rxi_NewSocket, rxi_FreeSocket and osi_NetSend are from the now defunct
#define rx_SetConnAbortThreshold(A) (rxi_connAbortThreshhold = (A))
#define rx_SetConnAbortDelay(A) (rxi_connAbortDelay = (A))
+#define rx_GetCallAbortCode(call) ((call)->abortCode)
+#define rx_SetCallAbortCode(call, code) ((call)->abortCode = (code))
+
#define cpspace(call) ((call)->curlen)
#define cppos(call) ((call)->curpos)
int refCount;
};
-#define RXS_OP(obj,op,args) ((obj->ops->op_ ## op) ? (*(obj)->ops->op_ ## op)args : 0)
+#define RXS_OP(obj,op,args) ((obj && (obj->ops->op_ ## op)) ? (*(obj)->ops->op_ ## op)args : 0)
#define RXS_Close(obj) RXS_OP(obj,Close,(obj))
#define RXS_NewConnection(obj,conn) RXS_OP(obj,NewConnection,(obj,conn))
#endif
#include <afsconfig.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_clock.c,v 1.1.1.5 2001/07/11 03:10:48 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_clock.c,v 1.1.1.6 2001/10/14 18:06:18 hartmans Exp $");
#ifdef KERNEL
#ifndef UKERNEL
#include <sys/time.h>
#include <stdio.h>
#include <errno.h>
+#include <stdlib.h>
#include "rx_clock.h"
#endif
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_getaddr.c,v 1.1.1.7 2001/09/20 06:16:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_getaddr.c,v 1.1.1.8 2001/10/14 18:06:19 hartmans Exp $");
#ifndef AFS_DJGPP_ENV
#ifndef KERNEL
ifr.ifr_addr.sa_family=AF_INET;
strncpy(ifr.ifr_name, sdl->sdl_data, sdl->sdl_nlen);
if (ioctl(s, SIOCGIFMTU, (caddr_t)&ifr) < 0)
- mtuBuffer[count]=1500;
+ mtuBuffer[count]=htonl(1500);
else
- mtuBuffer[count]=ifr.ifr_mtu;
+ mtuBuffer[count]=htonl(ifr.ifr_mtu);
count++;
}
addrcount--;
if ( ioctl(s, SIOCGIFMTU, (caddr_t)ifr) < 0) {
perror("SIOCGIFMTU");
} else {
- mtuBuffer[count] = ifr->ifr_metric;
+ mtuBuffer[count] = htonl(ifr->ifr_metric);
}
#endif /* SIOCGIFMTU */
#ifdef SIOCRIPMTU
if ( ioctl(s, SIOCRIPMTU, (caddr_t)ifr) < 0) {
perror("SIOCRIPMTU");
} else {
- mtuBuffer[count] = ifr->ifr_metric;
+ mtuBuffer[count] = htonl(ifr->ifr_metric);
}
#endif /* SIOCRIPMTU */
#include <afsconfig.h>
#include "../afs/param.h"
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_kcommon.c,v 1.1.1.8 2001/09/20 06:16:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_kcommon.c,v 1.1.1.9 2001/10/14 18:06:21 hartmans Exp $");
#include "../rx/rx_kcommon.h"
u_short rxmtu;
afs_int32 i, mtu;
+#ifndef AFS_SUN5_ENV
#ifdef AFS_USERSPACE_IP_ADDR
i = rxi_Findcbi(pp->host);
if (i == -1) {
pp->ifMTU = RX_REMOTE_PACKET_SIZE;
}
#endif/* else AFS_USERSPACE_IP_ADDR */
+#else /* AFS_SUN5_ENV */
+ mtu = rxi_FindIfMTU(pp->host);
+
+ if (mtu <= 0) {
+ pp->timeout.sec = 3;
+ /* pp->timeout.usec = 0; */
+ pp->ifMTU = RX_REMOTE_PACKET_SIZE;
+ } else {
+ pp->timeout.sec = 2;
+ /* pp->timeout.usec = 0; */
+ pp->ifMTU = MIN(RX_MAX_PACKET_SIZE, rx_MyMaxSendSize);
+ }
+
+ if (mtu > 0) {
+ /* Diminish the packet size to one based on the MTU given by
+ * the interface. */
+ if (mtu > (RX_IPUDP_SIZE + RX_HEADER_SIZE)) {
+ rxmtu = mtu - RX_IPUDP_SIZE;
+ if (rxmtu < pp->ifMTU) pp->ifMTU = rxmtu;
+ }
+ } else { /* couldn't find the interface, so assume the worst */
+ pp->ifMTU = RX_REMOTE_PACKET_SIZE;
+ }
+#endif /* AFS_SUN5_ENV */
#else /* ADAPT_MTU */
pp->rateFlag = 2; /* start timing after two full packets */
pp->timeout.sec = 2;
extern struct osi_socket *rxk_NewSocket(short aport);
extern struct ifnet *rxi_FindIfnet();
+extern int rxi_FindIfMTU();
extern int rxk_initDone;
#ifndef _RX_MISC_H_
#define _RX_MISC_H_
-#ifndef AFS_SUN5_ENV
#define MISCMTU
#define ADAPT_MTU
-#endif
-#if defined(AFS_SUN5_ENV) && !defined(KERNEL)
-#define MISCMTU
-#define ADAPT_MTU
+#if defined(AFS_SUN5_ENV)
#include <sys/sockio.h>
#include <sys/fcntl.h>
#endif
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_pthread.c,v 1.1.1.7 2001/09/20 06:16:06 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_pthread.c,v 1.1.1.8 2001/10/14 18:06:23 hartmans Exp $");
#include <sys/types.h>
#include <errno.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_rdwr.c,v 1.1.1.9 2001/09/20 06:16:06 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_rdwr.c,v 1.1.1.10 2001/10/14 18:06:23 hartmans Exp $");
#ifdef KERNEL
#ifndef UKERNEL
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_trace.c,v 1.1.1.6 2001/09/11 14:34:23 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/rx_trace.c,v 1.1.1.7 2001/10/14 18:06:24 hartmans Exp $");
#ifdef RXDEBUG
#ifdef HAVE_STRING_H
#else
char rxi_tracename[80]="\0Change This pathname (and preceding NUL) to initiate tracing";
#endif
-int rxi_logfd = 0;
+int rxi_logfd = -1;
char rxi_tracebuf[4096];
afs_uint32 rxi_tracepos = 0;
void rxi_flushtrace()
{
- if (rxi_logfd)
+ if (rxi_logfd >= 0)
write(rxi_logfd, rxi_tracebuf, rxi_tracepos);
rxi_tracepos = 0;
}
if (!rxi_tracename[0])
return;
- if (!rxi_logfd) {
+ if (rxi_logfd < 0) {
rxi_logfd = open(rxi_tracename, O_WRONLY | O_CREAT | O_TRUNC, 0777);
- if (!rxi_logfd)
+ if (rxi_logfd < 0)
rxi_tracename[0] = '\0';
}
clock_GetTime(&now);
}
rxi_logfd = open(rxi_tracename, O_RDONLY);
- if (!rxi_logfd) {
+ if (rxi_logfd < 0) {
perror("");
exit(errno);
}
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rx/test/generator.c,v 1.1.1.6 2001/09/20 06:16:15 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rx/test/generator.c,v 1.1.1.7 2001/10/14 18:06:31 hartmans Exp $");
#include <stdio.h>
#include <string.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxdebug/rxdebug.c,v 1.1 2001/09/11 14:34:38 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxdebug/rxdebug.c,v 1.1.1.2 2001/10/14 18:06:32 hartmans Exp $");
#include <sys/types.h>
#include <errno.h>
struct rx_debugConn tconn;
short noConns;
short showPeers;
+ short showLong;
int version_flag;
char version[64];
afs_int32 length=64;
version_flag=(as->parms[10].items ? 1 : 0);
noConns = (as->parms[11].items ? 1 : 0);
showPeers = (as->parms[12].items ? 1 : 0);
+ showLong = (as->parms[13].items ? 1 : 0);
if (as->parms[0].items)
hostName = as->parms[0].items->data;
tpeer.rtt >> 3, tpeer.rtt_dev >> 2);
printf("\ttimeout %d.%03d sec\n",
tpeer.timeout.sec, tpeer.timeout.usec / 1000);
+ if (!showLong) continue;
+
+ printf("\tin/out packet skew: %d/%d\n",
+ tpeer.inPacketSkew, tpeer.outPacketSkew);
+ printf("\tcongestion window %d, MTU %d\n",
+ tpeer.cwind, tpeer.MTU);
+ printf("\tcurrent/if/max jumbogram size: %d/%d/%d\n",
+ tpeer.nDgramPackets, tpeer.ifDgramPackets,
+ tpeer.maxDgramPackets);
}
}
exit(0);
cmd_AddParm(ts,"-version",CMD_FLAG,CMD_OPTIONAL,"show AFS version id");
cmd_AddParm(ts,"-noconns",CMD_FLAG,CMD_OPTIONAL,"show no connections");
cmd_AddParm(ts,"-peers",CMD_FLAG,CMD_OPTIONAL,"show peers");
+ cmd_AddParm(ts,"-long",CMD_FLAG,CMD_OPTIONAL,"detailed output");
cmd_Dispatch(argc, argv);
exit(0);
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxgen/rpc_main.c,v 1.1.1.8 2001/09/20 06:16:17 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxgen/rpc_main.c,v 1.1.1.9 2001/10/14 18:06:33 hartmans Exp $");
#include <limits.h>
#include <stdio.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxgen/rpc_parse.c,v 1.1.1.7 2001/09/20 06:16:17 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxgen/rpc_parse.c,v 1.1.1.8 2001/10/14 18:06:33 hartmans Exp $");
#include <stdlib.h>
#include <stdio.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_client.c,v 1.1.1.6 2001/09/11 14:34:42 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_client.c,v 1.1.1.7 2001/10/14 18:06:35 hartmans Exp $");
#ifdef KERNEL
#include "../afs/stds.h"
#include <afs/stds.h>
#include <sys/types.h>
#include <time.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#ifdef AFS_NT40_ENV
#include <winsock2.h>
#else
clock_GetTime(&tgen.time); /* changes time1 and time2 */
tgen.time.sec = htonl(tgen.time.sec);
tgen.time.usec = htonl(tgen.time.usec);
- tgen.counter = htonl(counter++);
+ tgen.counter = htonl(counter);
+ counter++;
#ifdef KERNEL
tgen.random1 = afs_random() & 0x7fffffff; /* was "80000" */
tgen.random2 = afs_random() & 0x7fffffff; /* was "htonl(100)" */
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_common.c,v 1.1.1.6 2001/09/11 14:34:42 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_common.c,v 1.1.1.7 2001/10/14 18:06:36 hartmans Exp $");
#ifdef KERNEL
#ifndef UKERNEL
#endif
#include <rx/rx.h>
#include <rx/xdr.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#endif /* KERNEL */
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_server.c,v 1.1.1.8 2001/09/20 06:16:20 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/rxkad_server.c,v 1.1.1.9 2001/10/14 18:06:36 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#else
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/rx.h>
#include <rx/xdr.h>
#include <des.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress.c,v 1.1.1.6 2001/09/20 06:16:20 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/test/stress.c,v 1.1.1.7 2001/10/14 18:06:37 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/ticket.c,v 1.1.1.6 2001/09/11 14:34:43 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/rxkad/ticket.c,v 1.1.1.7 2001/10/14 18:06:36 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#else
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <des.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/sys/pioctl_nt.c,v 1.1.1.6 2001/09/20 06:16:25 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/sys/pioctl_nt.c,v 1.1.1.7 2001/10/14 18:06:42 hartmans Exp $");
#include <afs/stds.h>
#include <windows.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/sys/rmtsysnet.c,v 1.1.1.4 2001/07/14 22:24:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/sys/rmtsysnet.c,v 1.1.1.5 2001/10/14 18:06:42 hartmans Exp $");
#include <errno.h>
#include <sys/param.h>
#endif
#include <sys/stat.h>
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <afs/afsint.h>
#include <afs/venus.h>
#include <rx/xdr.h>
# License. For details, see the LICENSE file in the top-level source
# directory or online at http://www.openafs.org/dl/license10.html
-# */
-
DEST=@DEST@
TOP_INCDIR=@TOP_INCDIR@
TOP_LIBDIR=@TOP_LIBDIR@
include ../config/Makefile.${SYS_NAME}
-CC =${MT_CC}
-CFLAGS = ${DBG} -w -I${TOP_SRCDIR}/config ${MT_CFLAGS}
+BUTMOBJS =file_tm.o
+BUTMLIBS =libbutm.a
+BUTMINCLS =${TOP_INCDIR}/afs/com_err.h ${TOP_INCDIR}/afs/butm.h
+BUTMINCLUDE =-I${TOP_INCDIR}
+
+CC = ${MT_CC}
+CFLAGS = ${DBG} -w -I${TOP_SRCDIR}/config ${MT_CFLAGS} @XBSA_CFLAGS@ ${BUTMINCLUDE}
LDFLAGS = ${DBG} ${XLDFLAGS}
-VICED =../viced
-VLSERVER=../vlserver
LWP =../lwp
-LIBACL =../libacl
-UTIL =../util
-DIR =../dir
-VOL =../vol
-FSINT =../fsint
BUTM =../butm
BUTC =../butc
BUCOORD = ../bucoord
VOLSER = ../volser
-# ----------------------------------------------------------------
-# The default is to build butc without using the TSM API libraries.
-# To build with TSM support, set XBSA_NOBUILD="". Be sure you have
-# the TSM API version 3.7.1 installed.
-# ----------------------------------------------------------------
-XBSA_NOBUILD="true"
-
BUCOORDOBJS=ubik_db_if.o ${BUCOORD}/volstub.o ${BUCOORD}/dlq.o \
${BUCOORD}/status.o ${BUCOORD}/bucoord_errs.o
VOLSERLIBOBJ=${VOLSER}/volint.cs.o vsprocs.o ${VOLSER}/vsutils.o \
${VOLSER}/lockprocs.o ${VOLSER}/volint.xdr.o ${VOLSER}/volerr.o \
${VOLSER}/volint.ss.o AFS_component_version_number.o
-VOLSERLIBS=libvolser.a
+VOLSERLIBS =libvolser.a
-LWPOBJS =lock.o
-
-BUTMOBJS =file_tm.o
-BUTMLIBS =libbutm.a
-BUTMINCLS=${TOP_INCDIR}/afs/com_err.h ${TOP_INCDIR}/afs/butm.h
-BUTMINCLUDE=-I${TOP_INCDIR}
+LWPOBJS =lock.o
BUTCOBJS =dbentries.o tcprocs.o lwps.o tcmain.o list.o recoverDb.o \
tcudbprocs.o dump.o tcstatus.o butc_xbsa.o \
${LWPOBJS} ${BUCOORDOBJS}
+
BUTCINCLS=${TOP_INCDIR}/afs/partition.h \
${TOP_INCDIR}/afs/volume.h \
${TOP_INCDIR}/afs/vlserver.h \
${TOP_INCDIR}/afs/tcdata.h \
${TOP_INCDIR}/afs/bubasics.h \
${TOP_INCDIR}/afs/butm.h
+
BUTCINCLUDE=-I. -I${TOP_INCDIR}
BUTCLIBS=${TOP_LIBDIR}/libbudb.a \
${TOP_LIBDIR}/libbubasics.a \
${TOP_LIBDIR}/libprocmgmt.a \
${TOP_LIBDIR}/librx.a
-include ../config/Makefile.version
+#
+# Build targets
+#
+
+all: butc
+
+butc: ${BUTCOBJS} ${BUTCLIBS}
+ ${CC} ${CFLAGS} ${BUTCOBJS} ${BUTCLIBS} ${MTLIBS} ${XLIBS} -o butc
-#----------------------------------------------- BUTC
+libvolser.a: vsprocs.o ${VOLSERLIBOBJ}
+ -$(RM) -f $@
+ $(AR) crv $@ vsprocs.o ${VOLSERLIBOBJ}
+ $(RANLIB) $@
-butc: pre ${BUTCOBJS} ${BUTCLIBS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCOBJS} ${BUTCLIBS} $$hdrdir ${MTLIBS} ${XLIBS} -o butc
+libbutm.a: ${BUTMOBJS} AFS_component_version_number.o
+ -$(RM) -f libbutm.a
+ $(AR) crv libbutm.a $(BUTMOBJS) AFS_component_version_number.o
+ ${RANLIB} libbutm.a
dbentries.o: ${BUTC}/dbentries.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/dbentries.c
+ ${CC} ${CFLAGS} -c ${BUTC}/dbentries.c
tcprocs.o: ${BUTC}/tcprocs.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/tcprocs.c
+ ${CC} ${CFLAGS} -c ${BUTC}/tcprocs.c
lwps.o: ${BUTC}/lwps.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/lwps.c
+ ${CC} ${CFLAGS} -c ${BUTC}/lwps.c
tcmain.o: ${BUTC}/tcmain.c ${BUTCINCLS} AFS_component_version_number.c
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/tcmain.c
+ ${CC} ${CFLAGS} -c ${BUTC}/tcmain.c
list.o: ${BUTC}/list.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/list.c
+ ${CC} ${CFLAGS} -c ${BUTC}/list.c
recoverDb.o: ${BUTC}/recoverDb.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/recoverDb.c
+ ${CC} ${CFLAGS} -c ${BUTC}/recoverDb.c
tcudbprocs.o: ${BUTC}/tcudbprocs.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/tcudbprocs.c
+ ${CC} ${CFLAGS} -c ${BUTC}/tcudbprocs.c
dump.o: ${BUTC}/dump.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/dump.c
+ ${CC} ${CFLAGS} -c ${BUTC}/dump.c
tcstatus.o: ${BUTC}/tcstatus.c ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/tcstatus.c
+ ${CC} ${CFLAGS} -c ${BUTC}/tcstatus.c
butc_xbsa.o: ${BUTC}/butc_xbsa.c ${BUTC}/butc_xbsa.h ${BUTCINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUTC}/butc_xbsa.c
-
-#----------------------------------------------- BUCOORD
+ ${CC} ${CFLAGS} -c ${BUTC}/butc_xbsa.c
ubik_db_if.o: ${BUCOORD}/ubik_db_if.c
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${BUCOORD}/ubik_db_if.c
-
-#----------------------------------------------- VOLSER
-# Build the libvolser.a library here. The file compiled
-# for is is vsprocs.c. The rest are from the VOLSER dir.
-
-libvolser.a: vsprocs.o ${VOLSERLIBOBJ}
- -$(RM) -f $@
- $(AR) crv $@ vsprocs.o ${VOLSERLIBOBJ}
- $(RANLIB) $@
+ ${CC} ${CFLAGS} -c ${BUCOORD}/ubik_db_if.c
vsprocs.o: ${VOLSER}/vsprocs.c
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${VOLSER}/vsprocs.c
-
-#----------------------------------------------- LWP
+ ${CC} ${CFLAGS} -c ${VOLSER}/vsprocs.c
lock.o: ${LWP}/lock.c
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTCINCLUDE} $$hdrdir -c ${LWP}/lock.c
-
-#----------------------------------------------- BUTC
+ ${CC} ${CFLAGS} -c ${LWP}/lock.c
file_tm.o: ${BUTM}/file_tm.c ${BUTMINCLS}
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir=-I"${XBSADIR}" ; \
- else hdrdir=-I"${XBSA_HDRDIR}" ; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then hdrdir="" ; fi; \
- ${CC} ${CFLAGS} $$xbsaflags ${BUTMINCLUDE} $$hdrdir -c ${BUTM}/file_tm.c
-
-libbutm.a: ${BUTMOBJS} AFS_component_version_number.o
- -$(RM) -f libbutm.a
- $(AR) crv libbutm.a $(BUTMOBJS) AFS_component_version_number.o
- ${RANLIB} libbutm.a
-
-#-----------------------------------------------
-clean:
- $(RM) -f *.o *.a core AFS_component_version_number.c butc
-
-pre:
- if [ "${XBSA_NOBUILD}" = "" ]; then xbsaflags="${XBSA_FLAGS}" ; \
- else xbsaflags=""; \
- fi; \
- if [ "$$xbsaflags" = "" ]; then \
- echo 'Will not build with XBSA'; \
- else \
- if [ "${XBSA_HDRDIR}" = "" ]; then hdrdir="${XBSADIR}" ; \
- else hdrdir="${XBSA_HDRDIR}" ; \
- fi; \
- if test "$$hdrdir" != "" -a ! -f "$$hdrdir/xbsa.h"; then \
- echo '*** This build of butc cannot support XBSA because'; \
- echo '*** the required header file "'$$hdrdir'/xbsa.h"'; \
- echo '*** does not exist. If you know the pathname to the'; \
- echo '*** header file, then use XBSA_HDRDIR="<path>" as a make'; \
- echo '*** argument.'; \
- echo '*** If you do not want to build an XBSA version of butc,'; \
- echo '*** then use XBSA_NOBUILD="true" as a make argument.'; \
- exit 2; \
- else \
- echo 'Will use XBSA header files from "'$$hdrdir'" (XBSA_HDRDIR)'; \
- fi; \
- fi
+ ${CC} ${CFLAGS} -c ${BUTM}/file_tm.c
-all: butc
-
-install install.noversion: ${DESTDIR}${sbindir}/butc
+#
+# Install targets
+#
+install: ${DESTDIR}${sbindir}/butc
+dest: ${DEST}/etc/butc
-noversion: install
-system: install
${DEST}/etc/butc: butc
${INSTALL} $? $@
${DESTDIR}${sbindir}/butc: butc
${INSTALL} $? $@
+#
+# Misc targets
+#
+include ../config/Makefile.version
-dest: ${DEST}/etc/butc
+clean:
+ $(RM) -f *.o *.a core AFS_component_version_number.c butc
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/beacon.c,v 1.1.1.9 2001/09/20 06:16:28 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/beacon.c,v 1.1.1.10 2001/10/14 18:06:44 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#endif
#include <errno.h>
#include <lock.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <rx/rx_multi.h>
char *ubik_CRXSecurityRock;
afs_int32 ubikSecIndex;
struct rx_securityClass *ubikSecClass;
+static verifyInterfaceAddress();
/* Module responsible for both deciding if we're currently the sync site,
struct ubik_server *magicServer;
/* verify that the addresses passed in are correct */
- if (code = verifyInterfaceAddress(&ame, info, aservers))
+ if ((code = verifyInterfaceAddress(&ame, info, aservers)))
return code;
/* get the security index to use, if we can */
}
} else {
i = 0;
- while (servAddr = *aservers++) {
+ while ((servAddr = *aservers++)) {
if (i >= MAXSERVERS) return UNHOSTS; /* too many hosts */
ts = (struct ubik_server *) malloc(sizeof(struct ubik_server));
memset(ts, 0, sizeof(struct ubik_server));
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/disk.c,v 1.1.1.6 2001/09/20 06:16:28 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/disk.c,v 1.1.1.7 2001/10/14 18:06:45 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#include <netinet/in.h>
#endif
#include <errno.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <lock.h>
#include <rx/xdr.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/lock.c,v 1.1.1.6 2001/09/20 06:16:28 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/lock.c,v 1.1.1.7 2001/10/14 18:06:45 hartmans Exp $");
#include <sys/types.h>
#ifndef AFS_NT40_ENV
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/phys.c,v 1.1.1.4 2001/07/14 22:24:07 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/phys.c,v 1.1.1.5 2001/10/14 18:06:45 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#include <lwp.h>
#include <lock.h>
#include <errno.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#define UBIK_INTERNALS 1
#include "ubik.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/recovery.c,v 1.1.1.6 2001/09/11 14:34:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/recovery.c,v 1.1.1.7 2001/10/14 18:06:46 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#endif
#include <assert.h>
#include <lock.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <errno.h>
*/
urecovery_Interact() {
afs_int32 code, tcode;
- struct ubik_server *bestServer;
+ struct ubik_server *bestServer = NULL;
struct ubik_server *ts;
int dbok, doingRPC, now;
afs_int32 lastProbeTime, lastDBVCheck;
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/remote.c,v 1.1.1.7 2001/09/20 06:16:29 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/remote.c,v 1.1.1.8 2001/10/14 18:06:46 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#include <sys/file.h>
#include <netinet/in.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <lock.h>
#include <rx/xdr.h>
#include <rx/rx.h>
{
register afs_int32 code;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
DBHOLD(ubik_dbase);
register afs_int32 code;
register struct ubik_dbase *dbase;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
register struct ubik_dbase *dbase;
register afs_int32 code;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
register afs_int32 code;
register struct ubik_dbase *dbase;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
register struct ubik_dbase *dbase;
struct ubik_trans *ubik_thisTrans;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
if (!ubik_currentTrans) {
struct ubik_iovec *iovec;
char *iobuf;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
if (!ubik_currentTrans) {
register afs_int32 code;
register struct ubik_dbase *dbase;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
if (!ubik_currentTrans) {
register afs_int32 code;
register struct ubik_dbase *dbase;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
if (!ubik_currentTrans) {
{
register afs_int32 code;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
afs_int32 tlen;
afs_int32 length;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
/* temporarily disabled because it causes problems for migration tool. Hey, it's just
/* send the file back to the requester */
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
goto failed;
}
afs_int32 code=0;
struct ubik_dbase *dbase;
- if (code = ubik_CheckAuth(rxcall)) {
+ if ((code = ubik_CheckAuth(rxcall))) {
return(code);
}
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/ubik.c,v 1.1.1.8 2001/09/20 06:16:30 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/ubik.c,v 1.1.1.9 2001/10/14 18:06:46 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#endif
#include <time.h>
#include <lock.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <afs/cellconfig.h>
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/ubikclient.c,v 1.1.1.6 2001/09/20 06:16:30 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/ubikclient.c,v 1.1.1.7 2001/10/14 18:06:47 hartmans Exp $");
#if defined(UKERNEL)
#include "../afs/sysincludes.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/ubikcmd.c,v 1.1.1.5 2001/09/11 14:34:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/ubikcmd.c,v 1.1.1.6 2001/10/14 18:06:47 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#endif
#include <time.h>
#include <lock.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/utst_client.c,v 1.1.1.4 2001/07/14 22:24:08 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/utst_client.c,v 1.1.1.5 2001/10/14 18:06:47 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#endif
#include <time.h>
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <lock.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/utst_server.c,v 1.1.1.4 2001/07/14 22:24:10 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/utst_server.c,v 1.1.1.5 2001/10/14 18:06:48 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#endif
#include <time.h>
#include <stdio.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <lock.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/vote.c,v 1.1.1.8 2001/09/20 06:16:31 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/ubik/vote.c,v 1.1.1.9 2001/10/14 18:06:48 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#endif
#include <afs/afsutil.h>
#include <lock.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <rx/xdr.h>
#include <rx/rx.h>
#include <afs/afsutil.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/update/client.c,v 1.1.1.6 2001/09/11 14:35:00 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/update/client.c,v 1.1.1.7 2001/10/14 18:06:49 hartmans Exp $");
#include <afs/stds.h>
#ifdef AFS_AIX32_ENV
mode, atime, time);
if (errcode == 1) /* this file failed, but keep trying */
goto fail_dirbuf;
- if (errcode == -1) /* time to quit */
+ if (errcode == -1) /* time to quit */ {
+ fclose(stream);
+ unlink(dirbuf);
return -1;
+ }
}
}
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/usd/usd_file.c,v 1.1.1.8 2001/09/20 06:16:33 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/usd/usd_file.c,v 1.1.1.9 2001/10/14 18:06:52 hartmans Exp $");
#include <errno.h>
#include <fcntl.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/uss/uss.c,v 1.1.1.5 2001/09/20 06:16:34 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/uss/uss.c,v 1.1.1.6 2001/10/14 18:06:53 hartmans Exp $");
#ifdef AFS_AIX32_ENV
#include <signal.h>
libdir=@libdir@
includedir=@includedir@
mandir=@mandir@
+sysconfdir=@sysconfdir@
+localstatedir=@localstatedir@
COMPILE_ET=${TOP_SRCDIR}/comerr/compile_et
RXGEN=${TOP_SRCDIR}/rxgen/rxgen
TOP_SRCDIR=@TOP_SRCDIR@
cd test; $(MAKE)
include ../config/Makefile.version
-${DESTDIR}${bindir}/sys: sys
- ${INSTALL} $? $@
dest: \
${DEST}/include/afs/dirpath.h \
/* ReallyAbort: called from assert. May/85 */
#include <afsconfig.h>
#include <afs/param.h>
+#include <stdlib.h>
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/assert.c,v 1.1.1.4 2001/07/14 22:24:18 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/assert.c,v 1.1.1.5 2001/10/14 18:07:00 hartmans Exp $");
#include <stdio.h>
void AssertionFailed(char *file, int line)
{
- fprintf(stderr, "Assertion failed! file %s, line %d.\n", file, line);
+ char tdate[26];
+ time_t when;
+
+ time(&when);
+ strcpy(tdate, ctime(&when));
+ tdate[24] = '0';
+ fprintf(stderr, "%s: Assertion failed! file %s, line %d.\n",
+ tdate, file, line);
fflush(stderr);
#ifdef AFS_NT40_ENV
afs_NTAbort();
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/casestrcpy.c,v 1.1.1.4 2001/07/14 22:24:17 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/casestrcpy.c,v 1.1.1.5 2001/10/14 18:07:00 hartmans Exp $");
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <ctype.h>
#include <stddef.h>
#include <stdarg.h>
#define AFSDIR_CANONICAL_CLIENT_VICE_DIRPATH "/usr/vice"
#ifdef AFS_DARWIN_ENV
#define AFSDIR_ALTERNATE_CLIENT_VICE_DIRPATH "/var/db/openafs"
+#define AFSDIR_ALTERNATE_CLIENT_ETC_DIR "/var/db/openafs/etc"
#endif
#define AFSDIR_CANONICAL_SERVER_BIN_DIRPATH \
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/fileutil.c,v 1.1.1.5 2001/07/14 22:24:21 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/fileutil.c,v 1.1.1.6 2001/10/14 18:07:02 hartmans Exp $");
#include <afs/stds.h>
#include <stddef.h>
#include <windows.h>
#include <io.h>
#include "errmap_nt.h"
-#else
+#endif
+
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#ifdef HAVE_STRING_H
#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
#include "fileutil.h"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/kreltime.c,v 1.1.1.5 2001/09/11 14:35:13 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/kreltime.c,v 1.1.1.6 2001/10/14 18:07:02 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include "ktime.h"
#include <time.h>
#include <ctype.h>
-#if defined(AFS_SUN5_ENV) || defined(AFS_NT40_ENV)
+#ifdef HAVE_STRING_H
#include <string.h>
#else
+#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
+#endif
#include "afsutil.h"
char ps_keychar;
afs_int32 ps_maxValue;
} parseseq[] = {
- KTIMEDATE_YEAR, 'y', MAX_YEAR_VALUE, /* no max. value */
- KTIMEDATE_MONTH, 'm', MAX_MONTH_VALUE, /* months max. 12 */
- KTIMEDATE_DAY, 'd', MAX_DAY_VALUE, /* days max. 31 */
- 0, 0, 0,
+ { KTIMEDATE_YEAR, 'y', MAX_YEAR_VALUE, }, /* no max. value */
+ { KTIMEDATE_MONTH, 'm', MAX_MONTH_VALUE, }, /* months max. 12 */
+ { KTIMEDATE_DAY, 'd', MAX_DAY_VALUE, }, /* days max. 31 */
+ { 0, 0, 0, }
};
/* Encodings to and from relative dates. The caller is responsible for
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/ktime.c,v 1.1.1.5 2001/09/11 14:35:14 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/ktime.c,v 1.1.1.6 2001/10/14 18:07:03 hartmans Exp $");
#include <sys/types.h>
#include <stdio.h>
#ifdef AFS_NT40_ENV
#include <malloc.h>
#endif
-#if defined(AFS_SUN5_ENV) || defined(AFS_NT40_ENV)
+#ifdef HAVE_STRING_H
#include <string.h>
#else
+#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
+#endif
+#include <stdlib.h>
#include "afsutil.h"
#include "ktime.h"
};
/* free token list returned by parseLine */
+#ifdef undef
static LocalFreeTokens(alist)
register struct token *alist; {
register struct token *nlist;
}
return 0;
}
+#endif
static space(x)
int x; {
char *aline;
struct token **alist; {
char tbuffer[256];
- register char *tptr;
+ register char *tptr = NULL;
int inToken;
struct token *first, *last;
register struct token *ttok;
char *key;
afs_int32 value;
} ptkeys [] = {
- "sun", 0x10000,
- "mon", 0x10001,
- "tue", 0x10002,
- "wed", 0x10003,
- "thu", 0x10004,
- "fri", 0x10005,
- "sat", 0x10006,
- "sunday", 0x10000,
- "monday", 0x10001,
- "tuesday", 0x10002,
- "wednesday", 0x10003,
- "thursday", 0x10004,
- "thur", 0x10004,
- "friday", 0x10005,
- "saturday", 0x10006,
- "am", 0x20000,
- "pm", 0x20001,
- "a.m.", 0x20000,
- "p.m.", 0x20001,
- 0, 0,
+ { "sun", 0x10000, },
+ { "mon", 0x10001, },
+ { "tue", 0x10002, },
+ { "wed", 0x10003, },
+ { "thu", 0x10004, },
+ { "fri", 0x10005, },
+ { "sat", 0x10006, },
+ { "sunday", 0x10000, },
+ { "monday", 0x10001, },
+ { "tuesday", 0x10002, },
+ { "wednesday", 0x10003, },
+ { "thursday", 0x10004, },
+ { "thur", 0x10004, },
+ { "friday", 0x10005, },
+ { "saturday", 0x10006, },
+ { "am", 0x20000, },
+ { "pm", 0x20001, },
+ { "a.m.", 0x20000, },
+ { "p.m.", 0x20001, },
+ { 0, 0, }
};
/* ktime_DateOf
/* compare date in both formats, and return as in strcmp */
+#ifdef undef
static KTimeCmp(aktime, atm)
register struct ktime *aktime;
register struct tm *atm; {
}
return 0;
}
+#endif
/* compare date in both formats, and return as in strcmp */
static KDateCmp(akdate, atm)
#include <afs/param.h>
#endif
-RCSID("$Header: /tmp/cvstemp/openafs/src/util/uuid.c,v 1.1.1.6 2001/09/11 14:35:18 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/util/uuid.c,v 1.1.1.7 2001/10/14 18:07:05 hartmans Exp $");
#ifdef KERNEL
#include "../afs/sysincludes.h"
#include <sys/time.h>
#endif /* ITIMER_REAL */
#include <net/if.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdlib.h>
#endif
#include <sys/stat.h>
#include <fcntl.h>
cmdebug
fs
fstrace
-kdump-2.4.7-ac3
+kdump-*
up
+kdump
+kdump64
LIBS = ${FSLIBS}
-all: fs up fstrace cmdebug kdump kdump64
+all: fs up fstrace cmdebug livesys kdump kdump64
#
# Build targets
${DEST}/bin/fs ${DEST}/root.server/usr/afs/bin/fs: fs
${INSTALL} -s $? $@
+${DEST}/bin/livesys: livesys
+ ${INSTALL} -s $? $@
+
${DEST}/bin/up: up
${INSTALL} -s $? $@
${INSTALLex} -f kdump.sh.solaris7 $@; \
${INSTALL} -s -f $? ${DEST}/etc/kdump32;; \
*linux* ) \
+ ${INSTALLex} -f kdump.sh.linux $@; \
${INSTALL} -s kdump-${LINUX_VERSION} ${DEST}/etc/kdump-${LINUX_VERSION} ;; \
hp_ux11* ) \
${INSTALLex} -f kdump.sh.hp_ux11 $@; \
fs: fs.o $(LIBS)
${CC} ${CFLAGS} -g -o fs fs.o ${TOP_LIBDIR}/libprot.a $(LIBS) ${XLIBS}
+livesys.o: livesys.c ${INCLS} AFS_component_version_number.c
+
+livesys: livesys.c $(LIBS)
+ ${CC} -g -o livesys $(CFLAGS) livesys.c $(LIBS) ${XLIBS}
+
twiddle: twiddle.c $(LIBS)
${CC} -g -o twiddle $(CFLAGS) twiddle.c $(LIBS) ${XLIBS}
#
install: \
${DESTDIR}${bindir}/fs \
+ ${DESTDIR}${bindir}/livesys \
${DESTDIR}${afssrvbindir}/fs \
${DESTDIR}${bindir}/up \
${DESTDIR}${sbindir}/fstrace \
${DESTDIR}${bindir}/fs: fs
${INSTALL} -s $? $@
+${DESTDIR}${bindir}/livesys: livesys
+ ${INSTALL} -s $? $@
+
${DESTDIR}${afssrvbindir}/fs: fs
${INSTALL} -s $? $@
dest: \
${DEST}/bin/fs \
+ ${DEST}/bin/livesys \
${DEST}/root.server/usr/afs/bin/fs \
${DEST}/bin/up \
${DEST}/etc/fstrace \
+AFS_component_version_number.c
Makefile
+vfsck
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vfsck/setup.c,v 1.1.1.5 2001/09/20 06:16:47 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vfsck/setup.c,v 1.1.1.6 2001/10/14 18:07:11 hartmans Exp $");
#include <stdio.h>
#define VICE
}
}
}
-#endif
if (rootdev == statb.st_rdev)
hotroot++;
if ((fsreadfd = open(dev, O_RDONLY)) < 0) {
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/viced/callback.c,v 1.1.1.6 2001/09/11 14:35:33 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/viced/callback.c,v 1.1.1.7 2001/10/14 18:07:13 hartmans Exp $");
#include <stdio.h>
#include <stdlib.h> /* for malloc() */
cb->tprev = thp->tprev;
cb->tnext = *thead;
- thp->tprev = (itocb(thp->tprev)->tnext = cbtoi(cb));
+ if (thp) {
+ if (thp->tprev)
+ thp->tprev = (itocb(thp->tprev)->tnext = cbtoi(cb));
+ else
+ thp->tprev = cbtoi(cb);
+ }
}
cb->thead = ttoi(thead);
if (*thead == cbtoi(cb))
*thead = (*thead == cb->tnext? 0: cb->tnext);
- itocb(cb->tprev)->tnext = cb->tnext;
- itocb(cb->tnext)->tprev = cb->tprev;
+ if (itocb(cb->tprev))
+ itocb(cb->tprev)->tnext = cb->tnext;
+ if (itocb(cb->tnext))
+ itocb(cb->tnext)->tprev = cb->tprev;
} /*TDel*/
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/viced/host.c,v 1.1.1.6 2001/09/11 14:35:35 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/viced/host.c,v 1.1.1.7 2001/10/14 18:07:13 hartmans Exp $");
#include <stdio.h>
#include <errno.h>
register int i;
block = (struct CEBlock *)malloc(sizeof(struct CEBlock));
- if (!block)
+ if (!block) {
+ ViceLog(0, ("Failed malloc in GetCEBlock\n"));
ShutDownAndCore(PANIC);
+ }
for(i = 0; i < (CESPERBLOCK -1); i++) {
Lock_Init(&block->entry[i].lock);
if (CEFree == 0)
GetCEBlock();
- if (CEFree == 0)
+ if (CEFree == 0) {
+ ViceLog(0, ("CEFree NULL in GetCE\n"));
ShutDownAndCore(PANIC);
+ }
entry = CEFree;
CEFree = entry->next;
static int index = 0;
block = (struct HTBlock *)malloc(sizeof(struct HTBlock));
- if (!block)
+ if (!block) {
+ ViceLog(0, ("Failed malloc in GetHTBlock\n"));
ShutDownAndCore(PANIC);
+ }
#ifdef AFS_PTHREAD_ENV
for(i=0; i < (h_HTSPERBLOCK); i++)
register struct host *host;
{
- if (!((host)->holds[h_holdSlot()] &= ~h_holdbit()) ) {
+ if (!((host)->holds[h_holdSlot()] & ~h_holdbit()) ) {
if (! h_OtherHolds_r(host) ) {
+ /* must avoid masking this until after h_OtherHolds_r runs
+ but it should be run before h_TossStuff_r */
+ (host)->holds[h_holdSlot()] &= ~h_holdbit();
if ( (host->hostFlags & HOSTDELETED) ||
(host->hostFlags & CLIENTDELETED) ) {
h_TossStuff_r(host);
}
- }
- }
+ } else
+ (host)->holds[h_holdSlot()] &= ~h_holdbit();
+ } else
+ (host)->holds[h_holdSlot()] &= ~h_holdbit();
+
return 0;
}
char tmpStr[256];
H_LOCK
- sprintf(tmpStr, "ip:%x holds:%d port:%d hidx:%d cbid:%d lock:%x last:%u active:%u down:%d del:%d cons:%d cldel:%d\n\t hpfailed:%d hcpsCall:%u hcps [",
- host->host, host->holds, host->port, host->index, host->cblist,
+ sprintf(tmpStr, "ip:%x port:%d hidx:%d cbid:%d lock:%x last:%u active:%u down:%d del:%d cons:%d cldel:%d\n\t hpfailed:%d hcpsCall:%u hcps [",
+ host->host, host->port, host->index, host->cblist,
CheckLock(&host->lock), host->LastCall, host->ActiveCall,
(host->hostFlags & VENUSDOWN), host->hostFlags&HOSTDELETED,
host->Console, host->hostFlags & CLIENTDELETED,
sprintf(tmpStr, " %x", host->interface->addr[i]);
STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
}
- sprintf(tmpStr, "]\n");
+ sprintf(tmpStr, "] holds: ");
+ STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
+
+ for (i = 0 ; i < h_maxSlots ; i++) {
+ sprintf(tmpStr, "%04x", host->holds[i]);
+ STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
+ }
+ sprintf(tmpStr, " slot/bit: %d/%d\n", h_holdSlot(), h_holdbit());
STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
+
H_UNLOCK
return held;
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/viced/viced.c,v 1.1.1.7 2001/09/11 14:35:36 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/viced/viced.c,v 1.1.1.8 2001/10/14 18:07:15 hartmans Exp $");
#include <stdio.h>
#include <stdlib.h>
}
#endif
confDir = afsconf_Open(AFSDIR_SERVER_ETC_DIRPATH);
+ if (!confDir) {
+ fprintf(stderr, "Unable to open config directory %s\n",
+ AFSDIR_SERVER_ETC_DIRPATH);
+ exit(-1);
+ }
NewParms(1);
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vlclient.c,v 1.1.1.6 2001/09/20 06:16:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vlclient.c,v 1.1.1.7 2001/10/14 18:07:16 hartmans Exp $");
#include <afs/stds.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vldb_check.c,v 1.1.1.6 2001/09/20 06:16:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vldb_check.c,v 1.1.1.7 2001/10/14 18:07:16 hartmans Exp $");
#include <sys/types.h>
#include <sys/stat.h>
afs_int32 reserved[5]; /* for future usage */
};
+/* Volser information/status */
+const VLOP_MOVE = 0x10;
+const VLOP_RELEASE = 0x20;
+const VLOP_BACKUP = 0x40;
+const VLOP_DELETE = 0x80;
+const VLOP_DUMP = 0x100;
+
+%#define VLOP_ALLOPERS ( VLOP_MOVE | VLOP_RELEASE | VLOP_BACKUP | VLOP_DELETE | VLOP_DUMP)
/* defines for convenience of vl users */
%#define VLF_RWEXISTS 0x1000 /* flags for whole vldb entry */
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vlprocs.c,v 1.1.1.6 2001/09/20 06:16:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vlprocs.c,v 1.1.1.7 2001/10/14 18:07:17 hartmans Exp $");
#include <sys/types.h>
#include <stdio.h>
#define VLLOCKED 4 /* Advisory lock on entry */
#define VLCONTBLOCK 8 /* Special continuation block entry */
-/* Vlentry's flags also used to stamp type of ongoing operation */
-#define VLOP_MOVE 0x10
-#define VLOP_RELEASE 0x20
-#define VLOP_BACKUP 0x40
-#define VLOP_DELETE 0x80
-#define VLOP_DUMP 0x100
-#define VLOP_ALLOPERS (VLOP_MOVE | VLOP_RELEASE | VLOP_BACKUP | VLOP_DELETE | VLOP_DUMP)
-
/* Valid RelaseLock types */
#define LOCKREL_TIMESTAMP 1
#define LOCKREL_OPCODE 2
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vlutils.c,v 1.1.1.6 2001/09/20 06:16:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vlserver/vlutils.c,v 1.1.1.7 2001/10/14 18:07:18 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
Makefile
salvager
volinfo
+gi
+fs_conv_sol26
${DEST}/lib/afs/libvlib.a: vlib.a
${INSTALL} $? $@
-${DESTDIR}/${afssrvsbindir}/fs_conv_dux40D: fs_conv_dux40D
+${DESTDIR}${afssrvsbindir}/fs_conv_dux40D: fs_conv_dux40D
${INSTALL} -s $? $@
-${DESTDIR}/${afssrvsbindir}/xfs_size_check: xfs_size_check
+${DESTDIR}${afssrvsbindir}/xfs_size_check: xfs_size_check
${INSTALL} -s $? $@
-${DESTDIR}/${afssrvsbindir}/fs_conv_sol26: fs_conv_sol26
+${DESTDIR}${afssrvsbindir}/fs_conv_sol26: fs_conv_sol26
${INSTALL} -s $? $@
$(DEST)/root.server/usr/afs/bin/fs_conv_dux40D: fs_conv_dux40D
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/clone.c,v 1.1.1.6 2001/09/20 06:16:58 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/clone.c,v 1.1.1.7 2001/10/14 18:07:21 hartmans Exp $");
#include <sys/types.h>
#include <stdio.h>
#include <sys/param.h>
#include <afsconfig.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/devname.c,v 1.1.1.7 2001/09/20 06:16:59 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/devname.c,v 1.1.1.8 2001/10/14 18:07:21 hartmans Exp $");
#include <afs/param.h>
#include <rx/xdr.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/ihandle.c,v 1.1.1.4 2001/07/14 22:24:56 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/ihandle.c,v 1.1.1.5 2001/10/14 18:07:22 hartmans Exp $");
#include <stdio.h>
#include <sys/types.h>
}
/* Open a file for buffered I/O */
-StreamHandle_t *stream_open(char *filename, char *mode)
+StreamHandle_t *stream_open(const char *filename, const char *mode)
{
FD_t fd;
extern int fd_close(FdHandle_t *fdP);
extern int fd_reallyclose(FdHandle_t *fdP);
extern StreamHandle_t *stream_fdopen(FD_t fd);
-extern StreamHandle_t *stream_open(char *file, char *mode);
+extern StreamHandle_t *stream_open(const char *file, const char *mode);
extern int stream_read(void *ptr, int size, int nitems,
StreamHandle_t *streamP);
extern int stream_write(void *ptr, int size, int nitems,
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/listinodes.c,v 1.1.1.8 2001/09/20 06:17:00 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/listinodes.c,v 1.1.1.9 2001/10/14 18:07:22 hartmans Exp $");
#ifndef AFS_NAMEI_ENV
#ifdef AFS_LINUX20_ENV
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/namei_ops.c,v 1.1.1.6 2001/07/14 22:24:57 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/namei_ops.c,v 1.1.1.7 2001/10/14 18:07:22 hartmans Exp $");
#ifdef AFS_NAMEI_ENV
#include <stdio.h>
char filename[32];
int fd;
+ /* Create the inode directory if we're starting for the first time */
+ sprintf(filename, "%s/%s", partition, INODEDIR);
+ mkdir(filename, 0700);
+
sprintf(filename, "%s/%s/README", partition, INODEDIR);
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0444);
if (fd >= 0) {
#define VICE_PARTITION_PREFIX "/vicep"
#define VICE_PREFIX_SIZE (sizeof(VICE_PARTITION_PREFIX)-1)
+/* If a file by this name exists in a /vicepX directory, it means that
+ * this directory should be used as an AFS partition even if it's not
+ * on a separate partition (for instance if it's part of a large /).
+ * This feature only works with the NAMEI fileserver.
+ */
+#ifdef AFS_NAMEI_ENV
+#define VICE_ALWAYSATTACH_FILE "AlwaysAttach"
+#endif
+
/* For NT, the roles of "name" and "devName" are reversed. That is, "name"
* refers to the drive letter name and "devName" refers to the /vicep style
* or name. The reason for this is that a lot of places assume that "name"
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/vnode.c,v 1.1.1.6 2001/09/20 06:17:02 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/vnode.c,v 1.1.1.7 2001/10/14 18:07:24 hartmans Exp $");
#include <errno.h>
#include <stdio.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/vol-salvage.c,v 1.1.1.8 2001/09/20 06:17:02 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/vol-salvage.c,v 1.1.1.9 2001/10/14 18:07:25 hartmans Exp $");
#include <stdlib.h>
#include <stdio.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/volume.c,v 1.1.1.10 2001/09/20 06:17:03 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/volume.c,v 1.1.1.11 2001/10/14 18:07:26 hartmans Exp $");
#include <rx/xdr.h>
#include <afs/afsint.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/vol/vutil.c,v 1.1.1.7 2001/09/20 06:17:04 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/vol/vutil.c,v 1.1.1.8 2001/10/14 18:07:26 hartmans Exp $");
#include <stdio.h>
#include <sys/types.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/common.c,v 1.1.1.5 2001/09/20 06:17:06 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/common.c,v 1.1.1.6 2001/10/14 18:07:28 hartmans Exp $");
#include <stdio.h>
#include <afs/afsutil.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/dumpstuff.c,v 1.1.1.7 2001/09/20 06:17:07 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/dumpstuff.c,v 1.1.1.8 2001/10/14 18:07:28 hartmans Exp $");
#include <sys/types.h>
#include <ctype.h>
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/lockprocs.c,v 1.1.1.5 2001/09/20 06:17:07 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/lockprocs.c,v 1.1.1.6 2001/10/14 18:07:29 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/volprocs.c,v 1.1.1.7 2001/09/20 06:17:08 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/volprocs.c,v 1.1.1.8 2001/10/14 18:07:30 hartmans Exp $");
#include <stdio.h>
#include <sys/types.h>
ClearVolumeStats(&V_disk(newvp));
V_destroyMe(newvp) = DESTROY_ME;
V_inService(newvp) = 0;
+ if (newType == backupVolume) {
+ V_backupDate(originalvp) = V_copyDate(newvp);
+ V_backupDate(newvp) = V_copyDate(newvp);
+ }
V_inUse(newvp) = 0;
VUpdateVolume(&error, newvp);
if (error) {
ClearVolumeStats(&V_disk(clonevp));
V_destroyMe(clonevp) = 0;
V_inService(clonevp) = 0;
+ if (newType == backupVolume) {
+ V_backupDate(originalvp) = V_copyDate(clonevp);
+ V_backupDate(clonevp) = V_copyDate(clonevp);
+ }
V_inUse(clonevp) = 0;
VUpdateVolume(&error, clonevp);
if (error) {
struct pIDs *partIds;
{
char namehead[9];
- struct stat rbuf, pbuf;
int code;
char i;
strcpy(namehead, "/vicep"); /*7 including null terminator*/
-#ifdef AFS_NT40_ENV
/* Just return attached partitions. */
namehead[7] = '\0';
for (i=0; i<26; i++) {
if (VGetPartition(namehead, 0))
partIds->partIds[i] = VGetPartition(namehead, 0) ? i : -1;
}
-#else
-
- (void) stat("/",&rbuf); /*interested in buf->st_dev*/
-
- for(i = 0 ; i < 26 ; i++){
-
- namehead[6] = i + 'a';
- namehead[7] = '\0';
- code = stat(namehead,&pbuf);
- if(!code){
- if(rbuf.st_dev != pbuf.st_dev) /*the partition is mounted */
- partIds->partIds[i] = i ;
- else partIds->partIds[i ] = -1;
- }
- else partIds->partIds[i ] = -1;
- }
-#endif
+
return 0;
}
struct stat rbuf, pbuf;
char namehead[9];
struct partList partList;
- int code, i, j=0, k;
+ struct DiskPartition *dp;
+ int i, j=0, k;
strcpy(namehead, "/vicep"); /*7 including null terminator*/
-#ifdef AFS_NT40_ENV
+
+ /* Only report attached partitions */
for(i = 0 ; i < VOLMAXPARTS; i++){
if (i < 26) {
namehead[6] = i + 'a';
namehead[7] = 'a' + (k%26);
namehead[8] = '\0';
}
- code = VGetPartition(namehead, 0);
- if (code)
+ dp = VGetPartition(namehead, 0);
+ if (dp)
partList.partId[j++] = i;
}
pEntries->partEntries_val = (afs_int32 *) malloc(j * sizeof(int));
memcpy((char *)pEntries->partEntries_val, (char *)&partList, j * sizeof(int));
pEntries->partEntries_len = j;
-#else
- code = stat("/",&rbuf); /*interested in buf->st_dev*/
- for(i = 0 ; i < VOLMAXPARTS; i++){
- if (i < 26) {
- namehead[6] = i + 'a';
- namehead[7] = '\0';
- } else {
- k = i - 26;
- namehead[6] = 'a' + (k/26);
- namehead[7] = 'a' + (k%26);
- namehead[8] = '\0';
- }
- code = stat(namehead,&pbuf);
- if(!code){
- if(rbuf.st_dev != pbuf.st_dev) /*the partition is mounted */
- partList.partId[j++] = i;
- }
- }
- pEntries->partEntries_val = (afs_int32 *) malloc(j * sizeof(int));
- memcpy((char *)pEntries->partEntries_val, (char *)&partList, j * sizeof(int));
- pEntries->partEntries_len = j;
-#endif
return 0;
}
/* Values for the UV_RestoreVolume flags parameter */
#define RV_FULLRST 0x1
#define RV_OFFLINE 0x2
+#define RV_RDONLY 0x10000
#endif /* _VOLSER_ */
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/vos.c,v 1.1.1.7 2001/09/20 06:17:10 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/vos.c,v 1.1.1.8 2001/10/14 18:07:31 hartmans Exp $");
#include <sys/types.h>
#ifdef AFS_NT40_ENV
cmd_AddParm(ts, "-noauth", CMD_FLAG, CMD_OPTIONAL, "don't authenticate");\
cmd_AddParm(ts, "-localauth",CMD_FLAG,CMD_OPTIONAL,"use server tickets");\
cmd_AddParm(ts, "-verbose", CMD_FLAG, CMD_OPTIONAL, "verbose");\
+cmd_AddParm(ts, "-crypt", CMD_FLAG, CMD_OPTIONAL, "encrypt commands");\
#define ERROR_EXIT(code) {error=(code); goto error_exit;}
extern struct rx_connection *UV_Bind();
extern struct rx_securityClass *rxnull_NewClientSecurityObject();
extern int UV_SetSecurity();
+extern int UV_SetVolumeInfo();
+extern int vsu_SetCrypt();
extern VL_SetLock();
extern VL_ReleaseLock();
extern VL_DeleteEntry();
return (error);
}
+/*------------------------------------------------------------------------
+ * PRIVATE SetFields
+ *
+ * Description:
+ * Routine used to change the status of a single volume.
+ *
+ * Arguments:
+ * as : Ptr to parsed command line arguments.
+ *
+ * Returns:
+ * 0 for a successful operation,
+ * Otherwise, one of the ubik or VolServer error values.
+ *
+ * Environment:
+ * Nothing interesting.
+ *
+ * Side Effects:
+ * As advertised.
+ *------------------------------------------------------------------------
+ */
+static SetFields(as)
+register struct cmd_syndesc *as;
+{
+ struct nvldbentry entry;
+ afs_int32 vcode = 0;
+ volintInfo info;
+ afs_int32 volid;
+ afs_int32 code, err;
+ afs_int32 aserver, apart;
+ int previdx = -1;
+
+ volid = vsu_GetVolumeID(as->parms[0].items->data, cstruct, &err); /* -id */
+ if (volid == 0) {
+ if (err) PrintError("", err);
+ else fprintf(STDERR, "Unknown volume ID or name '%s'\n", as->parms[0].items->data);
+ return -1;
+ }
+
+ code = VLDB_GetEntryByID (volid, RWVOL, &entry);
+ if (code) {
+ fprintf(STDERR, "Could not fetch the entry for volume number %u from VLDB \n",volid);
+ return (code);
+ }
+ MapHostToNetwork(&entry);
+
+ GetServerAndPart(&entry, RWVOL, &aserver, &apart, &previdx);
+ if (previdx == -1) {
+ fprintf(STDERR,"Volume %s does not exist in VLDB\n\n", as->parms[0].items->data);
+ return (ENOENT);
+ }
+
+ memset(&info, 0, sizeof(info));
+ info.volid = volid;
+ info.type = RWVOL;
+ info.dayUse = -1;
+ info.maxquota = -1;
+ info.flags = -1;
+ info.spare0 = -1;
+ info.spare1 = -1;
+ info.spare2 = -1;
+ info.spare3 = -1;
+
+ if (as->parms[1].items) {
+ /* -max <quota> */
+ code = util_GetInt32(as->parms[1].items->data, &info.maxquota);
+ if (code) {
+ fprintf(STDERR,"invalid quota value\n");
+ return code;
+ }
+ }
+ if (as->parms[2].items) {
+ /* -clearuse */
+ info.dayUse = 0;
+ }
+ code = UV_SetVolumeInfo(aserver, apart, volid, &info);
+ if (code)
+ fprintf(STDERR,"Could not update volume info fields for volume number %u\n",volid);
+ return (code);
+}
+
/*------------------------------------------------------------------------
* PRIVATE volOnline
*
{
afs_int32 avolid, aserver, apart, code,vcode, err;
afs_int32 aoverwrite = ASK;
- int restoreflags;
+ int restoreflags, readonly = 0, offline = 0, voltype = RWVOL;
char prompt;
char afilename[NameLen], avolname[VOLSER_MAXVOLNAME +1],apartName[10];
char volname[VOLSER_MAXVOLNAME +1];
exit(1);
}
}
+ if (as->parms[6].items) offline = 1;
+ if (as->parms[7].items) {
+ readonly = 1;
+ voltype = ROVOL;
+ }
aserver = GetServer(as->parms[0].items->data);
if (aserver == 0) {
fprintf(STDERR,"Volume does not exist; Will perform a full restore\n");
}
- else if (Lp_GetRwIndex(&entry) == -1) { /* RW volume does not exist - do a full */
- restoreflags = RV_FULLRST;
- if ( (aoverwrite == INC) || (aoverwrite == ABORT) )
- fprintf(STDERR,"RW Volume does not exist; Will perform a full restore\n");
+ else if ((!readonly && Lp_GetRwIndex(&entry) == -1) /* RW volume does not exist - do a full */
+ || (readonly && !Lp_ROMatch(0, 0, &entry))) { /* RO volume does not exist - do a full */
+ restoreflags = RV_FULLRST;
+ if ( (aoverwrite == INC) || (aoverwrite == ABORT) )
+ fprintf(STDERR,"%s Volume does not exist; Will perform a full restore\n",
+ readonly ? "RO" : "RW");
- if (avolid == 0) {
- avolid = entry.volumeId[RWVOL];
- }
- else if (entry.volumeId[RWVOL] != 0 && entry.volumeId[RWVOL] != avolid) {
- avolid = entry.volumeId[RWVOL];
- }
+ if (avolid == 0) {
+ avolid = entry.volumeId[voltype];
+ }
+ else if (entry.volumeId[voltype] != 0 && entry.volumeId[voltype] != avolid) {
+ avolid = entry.volumeId[voltype];
+ }
}
else { /* volume exists - do we do a full incremental or abort */
char c, dc;
if(avolid == 0) {
- avolid = entry.volumeId[RWVOL];
+ avolid = entry.volumeId[voltype];
}
- else if(entry.volumeId[RWVOL] != 0 && entry.volumeId[RWVOL] != avolid) {
- avolid = entry.volumeId[RWVOL];
+ else if(entry.volumeId[voltype] != 0 && entry.volumeId[voltype] != avolid) {
+ avolid = entry.volumeId[voltype];
}
/* A file name was specified - check if volume is on another partition */
/* Ask what to do */
if (vol_elsewhere) {
fprintf(STDERR,"The volume %s %u already exists on a different server/part\n",
- volname, entry.volumeId[RWVOL]);
+ volname, entry.volumeId[voltype]);
fprintf(STDERR,
"Do you want to do a full restore or abort? [fa](a): ");
}
else
{
fprintf(STDERR,"The volume %s %u already exists in the VLDB\n",
- volname, entry.volumeId[RWVOL]);
+ volname, entry.volumeId[voltype]);
fprintf(STDERR,
"Do you want to do a full/incremental restore or abort? [fia](a): ");
}
restoreflags = 0;
if (vol_elsewhere) {
fprintf(STDERR,
- "RW volume %u already exists on a different server/part; not allowed\n",
- avolid);
+ "%s volume %u already exists on a different server/part; not allowed\n",
+ readonly ? "RO" : "RW", avolid);
exit(1);
}
}
}
+ if (offline) restoreflags |= RV_OFFLINE;
+ if (readonly) restoreflags |= RV_RDONLY;
code = UV_RestoreVolume(aserver, apart, avolid, avolname,
restoreflags, WriteData, afilename);
if (code) {
fprintf(STDOUT,"Removed replication site %s %s for volume %s\n",as->parms[0].items->data,apartName,as->parms[2].items->data);
return 0;
}
+static ChangeLocation(as)
+register struct cmd_syndesc *as;
+{
+ afs_int32 avolid, aserver, apart,code, err;
+ char apartName[10];
+
+ avolid = vsu_GetVolumeID(as->parms[2].items->data, cstruct, &err);
+ if (avolid == 0) {
+ if (err) PrintError("", err);
+ else fprintf(STDERR, "vos: can't find volume '%s'\n", as->parms[2].items->data);
+ exit(1);
+ }
+ aserver = GetServer(as->parms[0].items->data);
+ if (aserver == 0) {
+ fprintf(STDERR,"vos: server '%s' not found in host table\n", as->parms[0].items->data);
+ exit(1);
+ }
+ apart = volutil_GetPartitionID(as->parms[1].items->data);
+ if (apart < 0) {
+ fprintf(STDERR,"vos: could not interpret partition name '%s'\n",as->parms[1].items->data );
+ exit(1);
+ }
+ if (!IsPartValid(apart,aserver,&code)){/*check for validity of the partition */
+ if(code) PrintError("",code);
+ else fprintf(STDERR,"vos : partition %s does not exist on the server\n",as->parms[1].items->data);
+ exit(1);
+ }
+ code = UV_ChangeLocation(aserver, apart, avolid);
+ if (code) {
+ PrintDiagnostics("addsite", code);
+ exit(1);
+ }
+ MapPartIdIntoName(apart,apartName);
+ fprintf(STDOUT,"Changed location to %s %s for volume %s\n",as->parms[0].items->data, apartName,as->parms[2].items->data);
+ return 0;
+}
static ListPartitions(as)
register struct cmd_syndesc *as;
tcell = as->parms[12].items->data;
if(as->parms[14].items) /* -serverauth specified */
sauth = 1;
+ if(as->parms[16].items) /* -crypt specified */
+ vsu_SetCrypt(1);
if (code = vsu_ClientInit((as->parms[13].items != 0), confdir, tcell, sauth,
&cstruct, UV_SetSecurity)) {
fprintf(STDERR,"could not initialize VLDB library (code=%u) \n",code);
cmd_AddParm(ts, "-file", CMD_SINGLE,CMD_OPTIONAL, "dump file");
cmd_AddParm(ts, "-id", CMD_SINGLE,CMD_OPTIONAL, "volume ID");
cmd_AddParm(ts, "-overwrite", CMD_SINGLE,CMD_OPTIONAL, "abort | full | incremental");
+ cmd_AddParm(ts, "-offline", CMD_FLAG, CMD_OPTIONAL,
+ "leave restored volume offline");
+ cmd_AddParm(ts, "-readonly", CMD_FLAG, CMD_OPTIONAL,
+ "make restored volume read-only");
COMMONPARMS;
ts = cmd_CreateSyntax("unlock", LockReleaseCmd, 0, "release lock on VLDB entry for a volume");
cmd_AddParm(ts, "-id", CMD_SINGLE, 0, "volume name or ID");
COMMONPARMS;
+ ts = cmd_CreateSyntax("changeloc", ChangeLocation, 0, "change an RW volume's location in the VLDB");
+ cmd_AddParm(ts, "-server", CMD_SINGLE, 0, "machine name for new location");
+ cmd_AddParm(ts, "-partition", CMD_SINGLE, 0, "partition name for new location");
+ cmd_AddParm(ts, "-id", CMD_SINGLE, 0, "volume name or ID");
+ COMMONPARMS;
+
ts = cmd_CreateSyntax("addsite", AddSite, 0, "add a replication site");
cmd_AddParm(ts, "-server", CMD_SINGLE, 0, "machine name for new site");
cmd_AddParm(ts, "-partition", CMD_SINGLE, 0, "partition name for new site");
COMMONPARMS;
cmd_CreateAlias (ts, "volinfo");
+ ts = cmd_CreateSyntax("setfields", SetFields, 0, "change volume info fields");
+ cmd_AddParm(ts, "-id", CMD_SINGLE, 0, "volume name or ID");
+ cmd_AddParm(ts, "-maxquota", CMD_SINGLE, CMD_OPTIONAL, "quota (KB)");
+ cmd_AddParm(ts, "-clearuse", CMD_FLAG, CMD_OPTIONAL, "clear dayUse");
+ COMMONPARMS;
+
ts = cmd_CreateSyntax("offline", volOffline, 0, (char *) CMD_HIDDEN);
cmd_AddParm(ts, "-server", CMD_SINGLE, 0, "server name");
cmd_AddParm(ts, "-partition", CMD_SINGLE, 0, "partition name");
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/vsprocs.c,v 1.1.1.7 2001/09/20 06:17:11 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/vsprocs.c,v 1.1.1.8 2001/10/14 18:07:32 hartmans Exp $");
#include <stdio.h>
#include <sys/types.h>
int islocked;
struct restoreCookie cookie;
int reuseID;
- afs_int32 newDate, volflag;
+ afs_int32 newDate, volflag, voltype, volsertype;
int index, same, errcode;
char apartName[10];
totid = 0;
temptid = 0;
+ if (flags & RV_RDONLY) {
+ voltype = ROVOL;
+ volsertype = volser_RO;
+ } else {
+ voltype = RWVOL;
+ volsertype = volser_RW;
+ }
+
pvolid = tovolid;
toconn = UV_Bind(toserver, AFSCONF_VOLUMEPORT);
if(pvolid == 0) {/*alot a new id if needed */
goto refail;
}
reuseID = 0;
- }
- else{
+ } else if (flags & RV_RDONLY) {
+ if (entry.flags & RW_EXISTS) {
+ fprintf(STDERR,"Entry for ReadWrite volume %s already exists!\n",entry.name);
+ error = VOLSERBADOP;
+ goto refail;
+ }
+ if (!entry.volumeId[ROVOL]) {
+ fprintf(STDERR,"Existing entry for volume %s has no ReadOnly ID\n",tovolname);
+ error = VOLSERBADOP;
+ goto refail;
+ }
+ pvolid = entry.volumeId[ROVOL];
+ } else {
pvolid = entry.volumeId[RWVOL];
}
}/* at this point we have a volume id to use/reuse for the volume to be restored */
fprintf(STDOUT,"Restoring volume %s Id %u on server %s partition %s ..", tovolname,
pvolid, hostutil_GetNameByINet(toserver), partName);
fflush(STDOUT);
- /*what should the volume be restored as ? rw or ro or bk ?
- right now the default is rw always */
- code = AFSVolCreateVolume(toconn, topart, tovolname, volser_RW, 0,&pvolid, &totid);
+ code = AFSVolCreateVolume(toconn, topart, tovolname, volsertype, 0,&pvolid, &totid);
if (code){
if (flags & RV_FULLRST) { /* full restore: delete then create anew */
if(verbose) {
goto refail;
}
if (verbose) fprintf(STDOUT," done\n");
- code = AFSVolCreateVolume(toconn, topart, tovolname, volser_RW, 0,&pvolid, &totid);
+ code = AFSVolCreateVolume(toconn, topart, tovolname, volsertype, 0,&pvolid, &totid);
if (code){
fprintf(STDERR,"Could not create new volume %u\n",pvolid);
error = code;
}
}
cookie.parent = pvolid;
- cookie.type = RWVOL;
+ cookie.type = voltype;
cookie.clone = 0;
strncpy(cookie.name,tovolname,VOLSER_OLDMAXVOLNAME);
}
code = AFSVolGetStatus(toconn,totid, &tstatus);
if(code) {
- fprintf(STDERR,"Could not get status information about the volume %u\n",tovolid);
+ fprintf(STDERR,"Could not get status information about the volume %u\n",pvolid);
error = code;
goto refail;
}
- code = AFSVolSetIdsTypes(toconn,totid, tovolname, RWVOL, pvolid,0,0);
+ code = AFSVolSetIdsTypes(toconn,totid, tovolname, voltype, pvolid,0,0);
if(code) {
fprintf(STDERR,"Could not set the right type and ID on %u\n",pvolid);
error = code;
/* Volume was restored on the file server, update the
* VLDB to reflect the change.
*/
- vcode = VLDB_GetEntryByID(pvolid,RWVOL, &entry);
+ vcode = VLDB_GetEntryByID(pvolid,voltype, &entry);
if(vcode && vcode != VL_NOENT && vcode != VL_ENTDELETED) {
fprintf(STDERR,"Could not fetch the entry for volume number %u from VLDB \n",pvolid);
error = vcode;
entry.nServers = 1;
entry.serverNumber[0] = toserver;/*should be indirect */
entry.serverPartition[0] = topart;
- entry.serverFlags[0] = ITSRWVOL;
- entry.flags = RW_EXISTS;
- if(tstatus.cloneID != 0){
+ entry.serverFlags[0] = (flags & RV_RDONLY) ? ITSROVOL : ITSRWVOL;
+ entry.flags = (flags & RV_RDONLY) ? RO_EXISTS : RW_EXISTS;
+ if (flags & RV_RDONLY)
+ entry.volumeId[ROVOL] = pvolid;
+ else if(tstatus.cloneID != 0){
entry.volumeId[ROVOL] = tstatus.cloneID;/*this should come from status info on the volume if non zero */
}
else
EnumerateEntry(&entry);
fprintf(STDOUT,"------- New entry -------\n");
}
- vcode = ubik_Call(VL_SetLock,cstruct, 0, pvolid, RWVOL, VLOP_RESTORE);
+ vcode = ubik_Call(VL_SetLock,cstruct, 0, pvolid, voltype, VLOP_RESTORE);
if(vcode) {
fprintf(STDERR,"Could not lock the entry for volume number %u \n",pvolid);
error = vcode;
strcpy(entry.name, tovolname);
/* Update the vlentry with the new information */
- index = Lp_GetRwIndex(&entry);
+ if (flags & RV_RDONLY)
+ index = Lp_ROMatch(toserver, topart, &entry) - 1;
+ else
+ index = Lp_GetRwIndex(&entry);
if (index == -1) {
- /* Add the rw site for the volume being restored */
+ /* Add the new site for the volume being restored */
entry.serverNumber[entry.nServers] = toserver;
entry.serverPartition[entry.nServers] = topart;
- entry.serverFlags[entry.nServers] = ITSRWVOL;
+ entry.serverFlags[entry.nServers] =
+ (flags & RV_RDONLY) ? ITSROVOL : ITSRWVOL;
entry.nServers++;
} else {
/* This volume should be deleted on the old site
entry.serverPartition[index] = topart;
}
- entry.flags |= RW_EXISTS;
+ entry.flags |= (flags & RV_RDONLY) ? RO_EXISTS : RW_EXISTS;
MapNetworkToHost(&entry,&storeEntry);
- vcode = VLDB_ReplaceEntry(pvolid,RWVOL, &storeEntry,LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP );
+ vcode = VLDB_ReplaceEntry(pvolid,voltype, &storeEntry,LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP );
if(vcode) {
fprintf(STDERR,"Could not update the entry for volume number %u \n",pvolid);
error = vcode;
if (!error) error = code;
}
if(islocked) {
- vcode = ubik_Call(VL_ReleaseLock,cstruct, 0, pvolid, RWVOL, LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP);
+ vcode = ubik_Call(VL_ReleaseLock,cstruct, 0, pvolid, voltype, LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP);
if(vcode) {
fprintf(STDERR,"Could not release lock on the VLDB entry for the volume %u\n",pvolid);
if(!error) error = vcode;
return 0;
}
+/*sets <server> <part> as read/write site for <volid> in the vldb */
+UV_ChangeLocation(server, part, volid)
+afs_int32 server, part, volid;
+{
+ afs_int32 vcode;
+ struct nvldbentry entry,storeEntry;
+ int index;
+
+ vcode = ubik_Call(VL_SetLock,cstruct, 0,volid,RWVOL, VLOP_ADDSITE);
+ if(vcode) {
+ fprintf(STDERR," Could not lock the VLDB entry for volume %u \n", volid);
+ PrintError("",vcode);
+ return(vcode);
+ }
+ vcode = VLDB_GetEntryByID(volid,RWVOL, &entry);
+ if(vcode) {
+ fprintf(STDERR,"Could not fetch the entry for volume number %u from VLDB \n",volid);
+ PrintError("",vcode);
+ return (vcode);
+ }
+ MapHostToNetwork(&entry);
+ index = Lp_GetRwIndex(&entry);
+ if (index < 0) {
+ /* no RW site exists */
+ fprintf(STDERR,"No existing RW site for volume %u", volid);
+ vcode = ubik_Call(VL_ReleaseLock,cstruct, 0, volid, RWVOL, LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP);
+ if(vcode) {
+ fprintf(STDERR,"Could not release lock on entry for volume %u \n",volid);
+ PrintError("",vcode);
+ return(vcode);
+ }
+ return VOLSERBADOP;
+ }
+ else { /* change the RW site */
+ entry.serverNumber[index] = server;
+ entry.serverPartition[index] = part;
+ MapNetworkToHost(&entry,&storeEntry);
+ vcode = VLDB_ReplaceEntry(volid,RWVOL,&storeEntry,LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP);
+ if(vcode){
+ fprintf(STDERR,"Could not update entry for volume %u \n",volid);
+ PrintError("",vcode);
+ ubik_Call(VL_ReleaseLock,cstruct, 0, volid, RWVOL, LOCKREL_OPCODE | LOCKREL_AFSID | LOCKREL_TIMESTAMP);
+ return(vcode);
+ }
+ if(verbose) fprintf(STDOUT," done\n");
+ }
+ return 0;
+}
+
/*list all the partitions on <aserver> */
UV_ListPartitions(aserver, ptrPartList, cntp)
afs_int32 aserver;
error_exit:
if (tid) {
rcode = 0;
- code = AFSVolEndTrans(conn, tid, &code);
+ code = AFSVolEndTrans(conn, tid, &rcode);
if (code || rcode) {
fprintf(STDERR, "SetVolumeStatus: EndTrans Failed\n");
if (!error) error = (code ? code : rcode);
return(error);
}
+UV_SetVolumeInfo(server, partition, volid, infop)
+ afs_int32 server, partition, volid;
+ volintInfo *infop;
+{
+ struct rx_connection *conn = 0;
+ afs_int32 tid=0;
+ afs_int32 code, error=0, rcode;
+
+ conn = UV_Bind(server, AFSCONF_VOLUMEPORT);
+ if (!conn) {
+ fprintf(STDERR, "SetVolumeInfo: Bind Failed");
+ ERROR_EXIT(-1);
+ }
+
+ code = AFSVolTransCreate(conn, volid, partition, ITOffline, &tid);
+ if (code) {
+ fprintf(STDERR, "SetVolumeInfo: TransCreate Failed\n");
+ ERROR_EXIT(code);
+ }
+
+ code = AFSVolSetInfo(conn, tid, infop);
+ if (code) {
+ fprintf(STDERR, "SetVolumeInfo: SetInfo Failed\n");
+ ERROR_EXIT(code);
+ }
+
+ error_exit:
+ if (tid) {
+ rcode = 0;
+ code = AFSVolEndTrans(conn, tid, &rcode);
+ if (code || rcode) {
+ fprintf(STDERR, "SetVolumeInfo: EndTrans Failed\n");
+ if (!error) error = (code ? code : rcode);
+ }
+ }
+
+ if (conn) rx_DestroyConnection(conn);
+ return(error);
+}
+
/*maps the host addresses in <old > (present in network byte order) to
that in< new> (present in host byte order )*/
void
#include <afsconfig.h>
#include <afs/param.h>
-RCSID("$Header: /tmp/cvstemp/openafs/src/volser/vsutils.c,v 1.1.1.8 2001/09/20 06:17:12 hartmans Exp $");
+RCSID("$Header: /tmp/cvstemp/openafs/src/volser/vsutils.c,v 1.1.1.9 2001/10/14 18:07:32 hartmans Exp $");
#include <afs/stds.h>
#ifdef AFS_NT40_ENV
#include "lockdata.h"
struct ubik_client *cstruct;
+static rxkad_level vsu_rxkad_level = rxkad_clear;
extern int VL_CreateEntry(), VL_CreateEntryN();
extern int VL_GetEntryByID(), VL_GetEntryByIDN();
extern int VL_GetEntryByNameO(), VL_GetEntryByNameN();
#endif /* notdef */
+/*
+ Set encryption. If 'cryptflag' is nonzero, encrpytion is turned on
+ for authenticated connections; if zero, encryption is turned off.
+ Calling this function always results in a level of at least rxkad_auth;
+ to get a rxkad_clear connection, simply don't call this.
+*/
+void vsu_SetCrypt(cryptflag)
+ int cryptflag;
+{
+ if (cryptflag) {
+ vsu_rxkad_level = rxkad_crypt;
+ } else {
+ vsu_rxkad_level = rxkad_auth;
+ }
+}
+
+
/*
Get the appropriate type of ubik client structure out from the system.
*/
break;
case 2:
sc = (struct rx_securityClass *)rxkad_NewClientSecurityObject(
- rxkad_clear, &ttoken.sessionKey, ttoken.kvno,
+ vsu_rxkad_level, &ttoken.sessionKey, ttoken.kvno,
ttoken.ticketLen, ttoken.ticket);
break;
default: