forked from Imagelibrary/rtems
Merged from 4.5.0-beta3a
This commit is contained in:
79
Makefile.am
79
Makefile.am
@@ -11,67 +11,32 @@ ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
|
||||
|
||||
SUBDIRS = doc make tools @TARGET_SUBDIRS@
|
||||
|
||||
AUTOMAKE_FILES = \
|
||||
automake/subdirs.am \
|
||||
automake/local.am \
|
||||
automake/lib.am
|
||||
AUTOMAKE_FILES = automake/subdirs.am automake/local.am automake/lib.am
|
||||
|
||||
ACLOCAL_FILES += \
|
||||
aclocal/ar-s.m4 \
|
||||
aclocal/bsp-alias.m4 \
|
||||
aclocal/canonical-host.m4 \
|
||||
aclocal/canonical-target-name.m4 \
|
||||
aclocal/canonicalize-tools.m4 \
|
||||
aclocal/check-bsps.m4 \
|
||||
aclocal/check-bsp-cache.m4 \
|
||||
aclocal/check-cpu.m4 \
|
||||
aclocal/check-cxx.m4 \
|
||||
aclocal/check-itron.m4 \
|
||||
aclocal/check-multiprocessing.m4 \
|
||||
aclocal/check-networking.m4 \
|
||||
aclocal/check-newlib.m4 \
|
||||
aclocal/check-posix.m4 \
|
||||
aclocal/check-rdbg.m4 \
|
||||
aclocal/enable-bare.m4 \
|
||||
aclocal/enable-cxx.m4 \
|
||||
aclocal/enable-gcc28.m4 \
|
||||
aclocal/enable-hwapi.m4 \
|
||||
aclocal/enable-inlines.m4 \
|
||||
aclocal/enable-itron.m4 \
|
||||
aclocal/enable-libcdir.m4 \
|
||||
aclocal/enable-multiprocessing.m4 \
|
||||
aclocal/enable-networking.m4 \
|
||||
aclocal/enable-posix.m4 \
|
||||
aclocal/enable-rdbg.m4 \
|
||||
aclocal/enable-rtemsbsp.m4 \
|
||||
aclocal/enable-tests.m4 \
|
||||
aclocal/gcc-pipe.m4 \
|
||||
aclocal/gcc-specs.m4 \
|
||||
aclocal/i386-gas-code16.m4 \
|
||||
aclocal/path-ksh.m4 \
|
||||
aclocal/path-perl.m4 \
|
||||
aclocal/prog-cc.m4 \
|
||||
aclocal/prog-cxx.m4 \
|
||||
aclocal/project-root.m4 \
|
||||
aclocal/rtems-top.m4 \
|
||||
aclocal/sysv-ipc.m4 \
|
||||
aclocal/target.m4 \
|
||||
aclocal/tool-paths.m4 \
|
||||
aclocal/tool-prefix.m4
|
||||
ACLOCAL_FILES += aclocal/ar-s.m4 aclocal/bsp-alias.m4 \
|
||||
aclocal/canonical-host.m4 aclocal/canonical-target-name.m4 \
|
||||
aclocal/canonicalize-tools.m4 aclocal/check-bsps.m4 \
|
||||
aclocal/check-bsp-cache.m4 aclocal/check-cpu.m4 aclocal/check-cxx.m4 \
|
||||
aclocal/check-itron.m4 aclocal/check-multiprocessing.m4 \
|
||||
aclocal/check-networking.m4 aclocal/check-newlib.m4 \
|
||||
aclocal/check-posix.m4 aclocal/check-rdbg.m4 aclocal/enable-bare.m4 \
|
||||
aclocal/enable-cxx.m4 aclocal/enable-gcc28.m4 aclocal/enable-hwapi.m4 \
|
||||
aclocal/enable-inlines.m4 aclocal/enable-itron.m4 \
|
||||
aclocal/enable-libcdir.m4 aclocal/enable-multiprocessing.m4 \
|
||||
aclocal/enable-networking.m4 aclocal/enable-posix.m4 \
|
||||
aclocal/enable-rdbg.m4 aclocal/enable-rtemsbsp.m4 \
|
||||
aclocal/enable-tests.m4 aclocal/gcc-pipe.m4 aclocal/gcc-specs.m4 \
|
||||
aclocal/i386-gas-code16.m4 aclocal/path-ksh.m4 aclocal/path-perl.m4 \
|
||||
aclocal/prog-cc.m4 aclocal/prog-cxx.m4 aclocal/project-root.m4 \
|
||||
aclocal/rtems-top.m4 aclocal/sysv-ipc.m4 aclocal/target.m4 \
|
||||
aclocal/tool-paths.m4 aclocal/tool-prefix.m4
|
||||
|
||||
noinst_SCRIPTS = \
|
||||
bootstrap
|
||||
noinst_SCRIPTS = bootstrap
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(AUTOMAKE_FILES) \
|
||||
$(ACLOCAL_FILES) \
|
||||
README.configure \
|
||||
SUPPORT \
|
||||
VERSION \
|
||||
LICENSE \
|
||||
$(noinst_SCRIPTS)
|
||||
EXTRA_DIST = $(AUTOMAKE_FILES) $(ACLOCAL_FILES) README.configure SUPPORT \
|
||||
VERSION LICENSE $(noinst_SCRIPTS)
|
||||
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(ACLOCAL_FILES)
|
||||
|
||||
include $(top_srcdir)/automake/subdirs.am
|
||||
include $(top_srcdir)/automake/local.am
|
||||
include $(top_srcdir)/automake/host.am
|
||||
|
||||
@@ -7,12 +7,15 @@ RTEMS_HOST=$host_os
|
||||
changequote(,)dnl
|
||||
case "${target}" in
|
||||
# hpux unix port should go here
|
||||
i[3456]86-pc-linux*) # unix "simulator" port
|
||||
i[34567]86-*linux*) # unix "simulator" port
|
||||
RTEMS_HOST=Linux
|
||||
;;
|
||||
i[3456]86-*freebsd2*) # unix "simulator" port
|
||||
i[34567]86-*freebsd2*) # unix "simulator" port
|
||||
RTEMS_HOST=FreeBSD
|
||||
;;
|
||||
i[34567]86-pc-cygwin*) # Cygwin is just enough unix like :)
|
||||
RTEMS_HOST=Cygwin
|
||||
;;
|
||||
sparc-sun-solaris*) # unix "simulator" port
|
||||
RTEMS_HOST=Solaris
|
||||
;;
|
||||
|
||||
@@ -15,10 +15,13 @@ AC_MSG_CHECKING(rtems target cpu)
|
||||
changequote(,)dnl
|
||||
case "${target}" in
|
||||
# hpux unix port should go here
|
||||
i[3456]86-pc-linux*) # unix "simulator" port
|
||||
i[34567]86-*linux*) # unix "simulator" port
|
||||
RTEMS_CPU=unix
|
||||
;;
|
||||
i[3456]86-*freebsd2*) # unix "simulator" port
|
||||
i[34567]86-*freebsd2*) # unix "simulator" port
|
||||
RTEMS_CPU=unix
|
||||
;;
|
||||
i[34567]86-pc-cygwin*) # Cygwin is just enough unix like :)
|
||||
RTEMS_CPU=unix
|
||||
;;
|
||||
no_cpu-*rtems*)
|
||||
|
||||
@@ -12,7 +12,8 @@ AC_REQUIRE([RTEMS_ENABLE_MULTIPROCESSING])dnl
|
||||
AC_CACHE_CHECK([whether BSP supports multiprocessing],
|
||||
rtems_cv_HAS_MP,
|
||||
[dnl
|
||||
if test -d "$srcdir/${RTEMS_TOPdir}/c/src/lib/libbsp/${RTEMS_CPU}/${$1}/shmsupp"; then
|
||||
RTEMS_BSP_ALIAS(${$1},bspdir)
|
||||
if test -d "$srcdir/${RTEMS_TOPdir}/c/src/lib/libbsp/${RTEMS_CPU}/${bspdir}/shmsupp"; then
|
||||
if test "$RTEMS_HAS_MULTIPROCESSING" = "yes"; then
|
||||
rtems_cv_HAS_MP="yes" ;
|
||||
else
|
||||
|
||||
@@ -15,10 +15,10 @@ esac],[RTEMS_HAS_ITRON_API=yes])
|
||||
changequote(,)dnl
|
||||
case "${target}" in
|
||||
# hpux unix port should go here
|
||||
i[3456]86-pc-linux*) # unix "simulator" port
|
||||
i[34567]86-pc-linux*) # unix "simulator" port
|
||||
RTEMS_HAS_ITRON_API=no
|
||||
;;
|
||||
i[3456]86-*freebsd2*) # unix "simulator" port
|
||||
i[34567]86-*freebsd2*) # unix "simulator" port
|
||||
RTEMS_HAS_ITRON_API=no
|
||||
;;
|
||||
no_cpu-*rtems*)
|
||||
|
||||
@@ -15,10 +15,10 @@ esac],[RTEMS_HAS_POSIX_API=yes])
|
||||
changequote(,)dnl
|
||||
case "${target}" in
|
||||
# hpux unix port should go here
|
||||
i[3456]86-pc-linux*) # unix "simulator" port
|
||||
i[34567]86-pc-linux*) # unix "simulator" port
|
||||
RTEMS_HAS_POSIX_API=no
|
||||
;;
|
||||
i[3456]86-*freebsd2*) # unix "simulator" port
|
||||
i[34567]86-*freebsd2*) # unix "simulator" port
|
||||
RTEMS_HAS_POSIX_API=no
|
||||
;;
|
||||
no_cpu-*rtems*)
|
||||
|
||||
@@ -64,6 +64,8 @@ unset ac_cv_prog_gxx
|
||||
unset ac_cv_prog_cc_g
|
||||
unset ac_cv_prog_cxx_works
|
||||
unset ac_cv_prog_cxx_cross
|
||||
dnl somehow autoconf macros leave this file
|
||||
rm -f conftest.C
|
||||
])
|
||||
|
||||
AC_DEFUN(RTEMS_PROG_CXX_FOR_TARGET,
|
||||
|
||||
@@ -54,7 +54,7 @@ if test "$no_recursion" != yes; then
|
||||
echo configuring in $target_subdir/$ac_config_dir
|
||||
|
||||
case "$srcdir" in
|
||||
.) ;;
|
||||
## .) ;;
|
||||
*)
|
||||
if test -d $target_subdir/$ac_config_dir || mkdir $target_subdir/$ac_config_dir; then :;
|
||||
else
|
||||
@@ -72,8 +72,8 @@ changequote(, )dnl
|
||||
changequote([, ])dnl
|
||||
|
||||
case "$srcdir" in
|
||||
.) # No --srcdir option. We are building in place.
|
||||
ac_sub_srcdir=$srcdir ;;
|
||||
## .) # No --srcdir option. We are building in place.
|
||||
## ac_sub_srcdir=$srcdir ;;
|
||||
/*) # Absolute path.
|
||||
ac_sub_srcdir=$srcdir/$ac_config_dir ;;
|
||||
*) # Relative path.
|
||||
|
||||
28
automake/host.am
Normal file
28
automake/host.am
Normal file
@@ -0,0 +1,28 @@
|
||||
## $Id$
|
||||
|
||||
## NOTE: This is a temporary work-around to keep
|
||||
## RTEMS's non automake standard make targets working.
|
||||
## Once automake is fully integrated these make targets
|
||||
## and this file will probably be removed
|
||||
|
||||
debug:
|
||||
@echo
|
||||
@echo "\"make debug\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=DEBUG"
|
||||
@echo
|
||||
|
||||
.PHONY: debug
|
||||
|
||||
profile:
|
||||
@echo
|
||||
@echo "\"make profile\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=PROFILE"
|
||||
@echo
|
||||
|
||||
preinstall-am: $(PREINSTALL_FILES)
|
||||
preinstall: preinstall-am
|
||||
.PHONY: preinstall preinstall-am
|
||||
|
||||
depend-am:
|
||||
depend: depend-am
|
||||
.PHONY: depend depend-am
|
||||
@@ -5,13 +5,59 @@
|
||||
## Once automake is fully integrated these make targets
|
||||
## and this file will probably be removed
|
||||
|
||||
debug-am:
|
||||
debug: debug-am
|
||||
.PHONY: debug debug-am
|
||||
## translate VARIANT into VARIANT_V
|
||||
VARIANT = OPTIMIZE
|
||||
|
||||
profile-am:
|
||||
profile: profile-am
|
||||
.PHONY: profile profile-am
|
||||
VARIANT_OPTIMIZE_V = OPTIMIZE
|
||||
VARIANT_DEBUG_V = DEBUG
|
||||
VARIANT_PROFILE_V = PROFILE
|
||||
VARIANT_optimize_V = OPTIMIZE
|
||||
VARIANT_debug_V = DEBUG
|
||||
VARIANT_profile_V = PROFILE
|
||||
|
||||
VARIANT_V = $(VARIANT_$(VARIANT)_V)
|
||||
|
||||
## Setup the variant build subdirectory
|
||||
ARCH_OPTIMIZE_V = o-optimize
|
||||
ARCH_DEBUG_V = o-debug
|
||||
ARCH_PROFILE_V = o-profile
|
||||
|
||||
ARCH__V = $(ARCH_OPTIMIZE_V)
|
||||
ARCH = $(ARCH_$(VARIANT_V)_V)
|
||||
|
||||
## Setup the library suffix
|
||||
LIBSUFFIX_OPTIMIZE_V =
|
||||
LIBSUFFIX_DEBUG_V = _g
|
||||
LIBSUFFIX_PROFILE_V = _p
|
||||
|
||||
LIBSUFFIX__V = $(LIBSUFFIX_OPTIMIZE_V)
|
||||
LIB_VARIANT = $(LIBSUFFIX_$(VARIANT_V)_V)
|
||||
|
||||
LIBSUFFIX_VA = $(LIB_VARIANT).a
|
||||
|
||||
## These are supposed to be set in make/custom/<bsp>.cfg
|
||||
## CFLAGS_OPTIMIZE_V =
|
||||
## CFLAGS_DEBUG_V =
|
||||
## CFLAGS_PROFILE_V =
|
||||
|
||||
CFLAGS__V = $(CFLAGS_OPTIMIZE_V)
|
||||
AM_CFLAGS += $(CFLAGS_$(VARIANT_V)_V)
|
||||
|
||||
debug:
|
||||
@echo
|
||||
@echo "\"make debug\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=DEBUG"
|
||||
@echo
|
||||
|
||||
.PHONY: debug
|
||||
|
||||
profile:
|
||||
@echo
|
||||
@echo "\"make profile\" is obsolete, instead use:"
|
||||
@echo " make VARIANT=PROFILE"
|
||||
@echo
|
||||
|
||||
.PHONY: profile
|
||||
|
||||
preinstall-am: $(PREINSTALL_FILES)
|
||||
preinstall: preinstall-am
|
||||
@@ -20,3 +66,15 @@ preinstall: preinstall-am
|
||||
depend-am:
|
||||
depend: depend-am
|
||||
.PHONY: depend depend-am
|
||||
|
||||
${ARCH}:
|
||||
mkdir ${ARCH}
|
||||
|
||||
clean-local:
|
||||
$(RM) -r o-optimize o-debug o-profile $(CLEANDIRS)
|
||||
$(RM) Depends-o-optimize.tmp Depends-o-debug.tmp Depends-o-profile.tmp
|
||||
|
||||
distclean-local:
|
||||
$(RM) Depends-o-optimize Depends-o-debug Depends-o-profile
|
||||
|
||||
PROJECT_TOOLS = $(PROJECT_RELEASE)/build-tools
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
## and this file will probably be removed
|
||||
|
||||
depend-recursive \
|
||||
preinstall-recursive \
|
||||
debug-recursive \
|
||||
profile-recursive:
|
||||
preinstall-recursive:
|
||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
@@ -31,12 +29,6 @@ profile-recursive:
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
debug: debug-recursive
|
||||
.PHONY: debug-recursive
|
||||
|
||||
profile: profile-recursive
|
||||
.PHONY: profile-recursive
|
||||
|
||||
preinstall: preinstall-recursive
|
||||
.PHONY: preinstall-recursive
|
||||
|
||||
|
||||
22
bootstrap
22
bootstrap
@@ -13,6 +13,8 @@
|
||||
# source tree
|
||||
|
||||
progname=`basename $0`
|
||||
top_srcdir=`dirname $0`
|
||||
|
||||
verbose="";
|
||||
quiet="false"
|
||||
mode="generate"
|
||||
@@ -31,9 +33,9 @@ usage()
|
||||
exit 1;
|
||||
}
|
||||
|
||||
if test ! -f VERSION; then
|
||||
if test ! -f $top_srcdir/VERSION; then
|
||||
echo "${progname}:"
|
||||
echo " Please change directory to RTEMS's toplevel directory"
|
||||
echo " Installation problem: Can't find file VERSION"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
@@ -57,25 +59,31 @@ case $1 in
|
||||
esac
|
||||
done
|
||||
|
||||
pwd=`pwd`;
|
||||
|
||||
case $mode in
|
||||
generate)
|
||||
confs=`find $pwd -name 'configure.in' -print`
|
||||
aclocal_dir=$pwd/aclocal
|
||||
|
||||
case $top_srcdir in
|
||||
/* ) aclocal_dir=$top_srcdir/aclocal
|
||||
;;
|
||||
*) aclocal_dir=`pwd`/$top_srcdir/aclocal
|
||||
;;
|
||||
esac
|
||||
|
||||
confs=`find . -name 'configure.in' -print`
|
||||
for i in $confs; do
|
||||
dir=`dirname $i`;
|
||||
( test "$quiet" = "true" || echo "$dir";
|
||||
cd $dir;
|
||||
aclocal -I $aclocal_dir;
|
||||
autoconf;
|
||||
test -f Makefile.am && automake $verbose ;
|
||||
test -n "`grep CONFIG_HEADER configure.in`" && autoheader ;
|
||||
test -f Makefile.am && automake $verbose ;
|
||||
test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \
|
||||
&& echo timestamp > stamp-h.in
|
||||
)
|
||||
done
|
||||
;;
|
||||
|
||||
clean)
|
||||
test "$quiet" = "true" || echo "removing automake generated Makefile.in files"
|
||||
files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'` ;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
|
||||
|
||||
## NOTE: This Makefile.am is rather fragile to the value of RTEMS_BSP
|
||||
## Esp. make clean and make distclean have unwanted side-effects
|
||||
## if RTEMS_BSP is not properly set up.
|
||||
@@ -11,10 +12,7 @@ ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
|
||||
RTEMS_BSP = $(RTEMS_BSP_LIST)
|
||||
## The '.' in SUBDIRS ensures that local make-targets (xxx-am) will be
|
||||
## triggered before $(RTEMS_BSP_LIST) subdirectories are made.
|
||||
SUBDIRS= \
|
||||
make \
|
||||
. \
|
||||
$(RTEMS_BSP)
|
||||
SUBDIRS = make . $(RTEMS_BSP)
|
||||
|
||||
## Use @RTEMS_BSP_LIST@ here, using $(RTEMS_BSP_LIST) would trigger
|
||||
## this rule for invalid BSPs
|
||||
@@ -30,23 +28,15 @@ $(RTEMS_BSP)
|
||||
done
|
||||
|
||||
## Let all RTEMS' make targets depend on ${RTEMS_BSP}
|
||||
all-am: ${RTEMS_BSP}
|
||||
debug-am: ${RTEMS_BSP}
|
||||
profile-am: ${RTEMS_BSP}
|
||||
all-local: ${RTEMS_BSP}
|
||||
preinstall-am: ${RTEMS_BSP}
|
||||
depend-am: ${RTEMS_BSP}
|
||||
|
||||
## Pull in extra files intro the distribution
|
||||
EXTRA_DIST = \
|
||||
ACKNOWLEDGEMENTS \
|
||||
README.DOS \
|
||||
REQUIRES \
|
||||
PROBLEMS \
|
||||
TESTED \
|
||||
README \
|
||||
EXTRA_DIST = ACKNOWLEDGEMENTS README.DOS REQUIRES PROBLEMS TESTED README \
|
||||
UPDATE_HELP
|
||||
|
||||
DIST_SUBDIRS = ${RTEMS_BSP}
|
||||
## -------------------------------------------------------
|
||||
include $(top_srcdir)/../automake/subdirs.am
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
include $(top_srcdir)/../automake/host.am
|
||||
|
||||
@@ -13,4 +13,4 @@ rtems_make_DATA = $(GENERIC_FILES)
|
||||
|
||||
EXTRA_DIST = target.cfg.in
|
||||
|
||||
include $(top_srcdir)/../../automake/local.am
|
||||
include $(top_srcdir)/../../automake/host.am
|
||||
|
||||
@@ -12,10 +12,12 @@ rtems_bspdir=$(prefix)/@RTEMS_BSP@
|
||||
# NOTE: The wildcard on the install should pick up everything except
|
||||
# the tests directory. This significantly minimizes the install size.
|
||||
install-data-local:
|
||||
rm -rf $(rtems_bspdir)/[bsl]*;
|
||||
$(mkinstalldirs) $(rtems_bspdir)
|
||||
cd $(PROJECT_ROOT); \
|
||||
tar cf - @RTEMS_BSP@/[bilsuM]* | (cd $(DESTDIR)$(prefix); tar xpBf - );
|
||||
|
||||
uninstall-local:
|
||||
rm -rf $(rtems_bspdir)/[bsl]*;
|
||||
|
||||
include $(top_srcdir)/../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../automake/local.am
|
||||
include $(top_srcdir)/../../automake/host.am
|
||||
|
||||
@@ -8,8 +8,7 @@ H_FILES = itron.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES = \
|
||||
$(PROJECT_INCLUDE) \
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE) \
|
||||
$(noinst_HEADERS:%=$(PROJECT_INCLUDE)/%)
|
||||
|
||||
$(PROJECT_INCLUDE):
|
||||
@@ -17,9 +16,7 @@ $(PROJECT_INCLUDE):
|
||||
$(PROJECT_INCLUDE)/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-am: $(PREINSTALL_FILES)
|
||||
debug-am: $(PREINSTALL_FILES)
|
||||
profile-am: $(PREINSTALL_FILES)
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
SUBDIRS = rtems itronsys
|
||||
|
||||
|
||||
@@ -4,13 +4,12 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
H_FILES = eventflags.h fmempool.h intr.h mbox.h msgbuffer.h network.h \
|
||||
port.h semaphore.h status.h sysmgmt.h task.h time.h types.h vmempool.h
|
||||
H_FILES = eventflags.h fmempool.h intr.h mbox.h msgbuffer.h network.h port.h \
|
||||
semaphore.h status.h sysmgmt.h task.h time.h types.h vmempool.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES = \
|
||||
$(PROJECT_INCLUDE)/itronsys \
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/itronsys \
|
||||
$(noinst_HEADERS:%=$(PROJECT_INCLUDE)/itronsys/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/itronsys:
|
||||
@@ -18,8 +17,6 @@ $(PROJECT_INCLUDE)/itronsys:
|
||||
$(PROJECT_INCLUDE)/itronsys/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-am: $(PREINSTALL_FILES)
|
||||
debug-am: $(PREINSTALL_FILES)
|
||||
profile-am: $(PREINSTALL_FILES)
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../../automake/local.am
|
||||
|
||||
@@ -5,13 +5,12 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
H_FILES = config.h eventflags.h fmempool.h intr.h itronapi.h mbox.h \
|
||||
msgbuffer.h network.h object.h port.h semaphore.h sysmgmt.h \
|
||||
task.h time.h vmempool.h
|
||||
msgbuffer.h network.h object.h port.h semaphore.h sysmgmt.h task.h \
|
||||
time.h vmempool.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES = \
|
||||
$(PROJECT_INCLUDE)/rtems/itron \
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/itron \
|
||||
$(H_FILES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/rtems/itron:
|
||||
@@ -19,9 +18,7 @@ $(PROJECT_INCLUDE)/rtems/itron:
|
||||
$(PROJECT_INCLUDE)/rtems/itron/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-am: $(PREINSTALL_FILES)
|
||||
debug-am: $(PREINSTALL_FILES)
|
||||
profile-am: $(PREINSTALL_FILES)
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
EXTRA_DIST = README
|
||||
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
##
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
if INLINE
|
||||
I_FILES = eventflags.inl fmempool.inl intr.inl mbox.inl msgbuffer.inl \
|
||||
network.inl port.inl semaphore.inl sysmgmt.inl task.inl \
|
||||
time.inl vmempool.inl
|
||||
network.inl port.inl semaphore.inl sysmgmt.inl task.inl time.inl \
|
||||
vmempool.inl
|
||||
|
||||
noinst_HEADERS = $(I_FILES)
|
||||
|
||||
PREINSTALL_FILES = \
|
||||
$(PROJECT_INCLUDE)/rtems/itron \
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/itron \
|
||||
$(I_FILES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/rtems/itron:
|
||||
@@ -20,8 +20,6 @@ $(PROJECT_INCLUDE)/rtems/itron/%.inl: %.inl
|
||||
$(INSTALL_DATA) $< $@
|
||||
endif
|
||||
|
||||
all-am: $(PREINSTALL_FILES)
|
||||
debug-am: $(PREINSTALL_FILES)
|
||||
profile-am: $(PREINSTALL_FILES)
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../../automake/local.am
|
||||
|
||||
@@ -18,9 +18,9 @@ EVENTFLAGS_C_FILES = eventflags.c
|
||||
|
||||
MAILBOX_C_FILES = mbox.c
|
||||
|
||||
MSGBUFFER_C_FILES = msgbuffer.c msgbuffertranslatereturncode.c \
|
||||
cre_mbf.c del_mbf.c prcv_mbf.c psnd_mbf.c rcv_mbf.c ref_mbf.c snd_mbf.c \
|
||||
trcv_mbf.c tsnd_mbf.c
|
||||
MSGBUFFER_C_FILES = msgbuffer.c msgbuffertranslatereturncode.c cre_mbf.c \
|
||||
del_mbf.c prcv_mbf.c psnd_mbf.c rcv_mbf.c ref_mbf.c snd_mbf.c trcv_mbf.c \
|
||||
tsnd_mbf.c
|
||||
|
||||
RENDEZVOUS_C_FILES = port.c
|
||||
|
||||
@@ -49,20 +49,11 @@ include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../../automake/lib.am
|
||||
|
||||
AM_CPPFLAGS += -D__RTEMS_INSIDE__
|
||||
AM_CFLAGS += $(CFLAGS_OS_V)
|
||||
|
||||
all: ${ARCH} ${OBJS}
|
||||
all-local: ${ARCH} ${OBJS}
|
||||
|
||||
UNUSED_C_FILES = \
|
||||
cre_mbx.c del_mbx.c \
|
||||
mboxtranslatereturncode.c \
|
||||
network.c \
|
||||
prcv_mbx.c \
|
||||
rcv_mbx.c \
|
||||
ref_mbx.c \
|
||||
snd_mbx.c \
|
||||
sysmgmt.c \
|
||||
trcv_mbx.c
|
||||
UNUSED_C_FILES = cre_mbx.c del_mbx.c mboxtranslatereturncode.c network.c \
|
||||
prcv_mbx.c rcv_mbx.c ref_mbx.c snd_mbx.c sysmgmt.c trcv_mbx.c
|
||||
|
||||
EXTRA_DIST = $(C_FILES) $(UNUSED_C_FILES)
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@ ER cre_tsk(
|
||||
)
|
||||
{
|
||||
register Thread_Control *the_thread;
|
||||
char *name = "trn";
|
||||
boolean status;
|
||||
Priority_Control core_priority;
|
||||
|
||||
@@ -90,7 +89,7 @@ ER cre_tsk(
|
||||
THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE,
|
||||
NULL, /* no budget algorithm callout */
|
||||
0,
|
||||
&name
|
||||
NULL
|
||||
);
|
||||
|
||||
if ( !status ) {
|
||||
|
||||
@@ -38,7 +38,7 @@ void _ITRON_Eventflags_Manager_initialization(
|
||||
/* control block */
|
||||
FALSE, /* TRUE if names for this object */
|
||||
/* are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
/* name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
@@ -39,7 +39,7 @@ void _ITRON_Fixed_memory_pool_Manager_initialization(
|
||||
/* size of this object's control block */
|
||||
FALSE, /* TRUE if names for this object */
|
||||
/* are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
/* name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
@@ -41,7 +41,7 @@ void _ITRON_Semaphore_Manager_initialization(
|
||||
sizeof( ITRON_Semaphore_Control ), /* size of this object's control block */
|
||||
FALSE, /* TRUE if names for this object */
|
||||
/* are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
/* name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
@@ -40,7 +40,7 @@ void _ITRON_Mailbox_Manager_initialization(
|
||||
sizeof( ITRON_Mailbox_Control ), /* size of this object's control block */
|
||||
FALSE, /* TRUE if names for this object */
|
||||
/* are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
/* name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
@@ -43,7 +43,7 @@ void _ITRON_Message_buffer_Manager_initialization(
|
||||
block */
|
||||
FALSE, /* TRUE if names for this
|
||||
object are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each
|
||||
object's name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
@@ -36,7 +36,7 @@ void _ITRON_Port_Manager_initialization(
|
||||
sizeof( ITRON_Port_Control ), /* size of this object's control block */
|
||||
FALSE, /* TRUE if names for this object */
|
||||
/* are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's name */
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ void _ITRON_Variable_memory_pool_Manager_initialization(
|
||||
/* size of this object's control block */
|
||||
FALSE, /* TRUE if names for this object */
|
||||
/* are strings */
|
||||
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
|
||||
/* name */
|
||||
FALSE /* TRUE if this class is threads */
|
||||
);
|
||||
|
||||
@@ -5,8 +5,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
|
||||
|
||||
SUBDIRS = include libc libcpu libbsp \
|
||||
$(LIBHWAPI)
|
||||
SUBDIRS = include libc libcpu libbsp
|
||||
|
||||
include $(top_srcdir)/../../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -24,10 +24,6 @@ extern "C" {
|
||||
{ console_initialize, console_open, console_close, \
|
||||
console_read, console_write, console_control }
|
||||
|
||||
void console_reserve_resources(
|
||||
rtems_configuration_table *configuration
|
||||
);
|
||||
|
||||
rtems_device_driver console_initialize(
|
||||
rtems_device_major_number,
|
||||
rtems_device_minor_number,
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
#ifndef __RTEMS_ERROR_h
|
||||
#define __RTEMS_ERROR_h
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* rtems_error() and rtems_panic() support
|
||||
*/
|
||||
@@ -34,5 +38,10 @@ void rtems_panic(const char *printf_format, ...);
|
||||
|
||||
extern int rtems_panic_in_progress;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
#ifndef TERMIOS_H
|
||||
#define TERMIOS_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -174,9 +176,15 @@ struct termios {
|
||||
#define TCSADRAIN 1
|
||||
#define TCSAFLUSH 2
|
||||
|
||||
int tcdrain(int);
|
||||
int tcflow(int, int);
|
||||
int tcflush(int, int);
|
||||
int tcgetattr(int, struct termios *);
|
||||
int tcsetattr(int, int, struct termios *);
|
||||
int tcdrain(int);
|
||||
pid_t tcgetprgrp(int);
|
||||
int tcsetprgrp(int, pid_t);
|
||||
int tcsendbreak(int, int);
|
||||
|
||||
speed_t cfgetospeed(const struct termios *tp);
|
||||
int cfsetospeed(struct termios *tp, speed_t speed);
|
||||
speed_t cfgetispeed(const struct termios *tp);
|
||||
|
||||
@@ -48,15 +48,14 @@ LIBC_GLUE_C_FILES = __getpid.c __gettod.c __times.c truncate.c access.c \
|
||||
|
||||
UNIX_LIBC_C_FILES = unixlibc.c hosterr.c
|
||||
|
||||
COMMON_C_FILES = $(BASE_FS_C_FILES) $(MALLOC_C_FILES) \
|
||||
$(TERMIOS_C_FILES) $(ERROR_C_FILES) $(ASSOCIATION_C_FILES)
|
||||
COMMON_C_FILES = gxx_wrappers.c $(BASE_FS_C_FILES) $(MALLOC_C_FILES) $(TERMIOS_C_FILES) \
|
||||
$(ERROR_C_FILES) $(ASSOCIATION_C_FILES)
|
||||
|
||||
UNIX_C_FILES = $(UNIX_LIBC_C_FILES) imfs_unixstub.c
|
||||
|
||||
EMBEDDED_C_FILES = $(LIBC_GLUE_C_FILES) \
|
||||
$(PASSWORD_GROUP_C_FILES) $(TERMINAL_IDENTIFICATION_C_FILES) \
|
||||
$(SYSTEM_CALL_C_FILES) $(DIRECTORY_SCAN_C_FILES) \
|
||||
$(IMFS_C_FILES)
|
||||
EMBEDDED_C_FILES = $(LIBC_GLUE_C_FILES) $(PASSWORD_GROUP_C_FILES) \
|
||||
$(TERMINAL_IDENTIFICATION_C_FILES) $(SYSTEM_CALL_C_FILES) \
|
||||
$(DIRECTORY_SCAN_C_FILES) $(IMFS_C_FILES)
|
||||
|
||||
if UNIX
|
||||
C_FILES = $(COMMON_C_FILES) $(UNIX_C_FILES)
|
||||
@@ -73,11 +72,8 @@ noinst_HEADERS = libio_.h
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../automake/lib.am
|
||||
|
||||
PREINSTALL_FILES = \
|
||||
$(PROJECT_INCLUDE) \
|
||||
$(PROJECT_INCLUDE)/rtems \
|
||||
$(PROJECT_INCLUDE)/sys \
|
||||
$(H_FILES:%=$(PROJECT_INCLUDE)/%) \
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE) $(PROJECT_INCLUDE)/rtems \
|
||||
$(PROJECT_INCLUDE)/sys $(H_FILES:%=$(PROJECT_INCLUDE)/%) \
|
||||
$(RTEMS_H_FILES:%=$(PROJECT_INCLUDE)/rtems/%) \
|
||||
$(SYS_H_FILES:%=$(PROJECT_INCLUDE)/sys/%)
|
||||
|
||||
@@ -95,8 +91,7 @@ $(PROJECT_INCLUDE)/rtems/%.h: %.h
|
||||
$(PROJECT_INCLUDE)/sys/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
TMPINSTALL_FILES += \
|
||||
$(PROJECT_RELEASE)/lib/$(LIBNAME)$(LIB_VARIANT).a
|
||||
TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/$(LIBNAME)$(LIB_VARIANT).a
|
||||
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
@@ -106,7 +101,7 @@ OBJS = $(C_O_FILES)
|
||||
|
||||
AM_CFLAGS += $(LIBC_DEFINES)
|
||||
|
||||
all: ${ARCH} $(TMPINSTALL_FILES)
|
||||
all-local: ${ARCH} $(TMPINSTALL_FILES)
|
||||
|
||||
$(LIB): ${OBJS}
|
||||
$(make-library)
|
||||
@@ -116,9 +111,7 @@ $(PROJECT_RELEASE)/lib/$(LIBNAME)$(LIB_VARIANT).a: $(LIB)
|
||||
|
||||
DOC_FILES = TODO CASES
|
||||
|
||||
EXTRA_DIST = \
|
||||
$(DOC_FILES) \
|
||||
$(COMMON_C_FILES) $(EMBEDDED_C_FILES) $(UNIX_C_FILES) \
|
||||
$(H_FILES) $(RTEMS_H_FILES) $(SYS_H_FILES)
|
||||
EXTRA_DIST = $(DOC_FILES) $(COMMON_C_FILES) $(EMBEDDED_C_FILES) \
|
||||
$(UNIX_C_FILES) $(H_FILES) $(RTEMS_H_FILES) $(SYS_H_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
/*
|
||||
* RTEMS threads compatibily routines for libgcc2.
|
||||
*
|
||||
* by: Rosimildo da Silva ( rdasilva@connecttel.com
|
||||
*
|
||||
* Used ideas from:
|
||||
* W. Eric Norum
|
||||
* Canadian Light Source
|
||||
* University of Saskatchewan
|
||||
* Saskatoon, Saskatchewan, CANADA
|
||||
* eric@cls.usask.ca
|
||||
*
|
||||
* Eric sent some e-mail in the rtems-list as a start point for this
|
||||
* module implementation.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
/* We might not need, defined just in case */
|
||||
#define __RTEMS_INSIDE__ 1
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <rtems.h>
|
||||
#include <rtems/system.h>
|
||||
#include <rtems/rtems/tasks.h>
|
||||
|
||||
/*
|
||||
* These typedefs should match with the ones defined in the file
|
||||
* gcc/gthr-rtems.h in the gcc distribution.
|
||||
*/
|
||||
typedef void *__gthread_key_t;
|
||||
typedef int __gthread_once_t;
|
||||
typedef void *__gthread_mutex_t;
|
||||
|
||||
|
||||
/* uncomment this if you need to debug this interface */
|
||||
|
||||
/*
|
||||
#define DEBUG_GXX_WRAPPERS 1
|
||||
*/
|
||||
|
||||
|
||||
/* prototype for the terminate() */
|
||||
extern void __terminate( void );
|
||||
|
||||
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
/* local function to return the ID of the calling thread */
|
||||
static rtems_id get_tid( void )
|
||||
{
|
||||
rtems_id id = 0;
|
||||
rtems_task_ident( RTEMS_SELF, 0, &id );
|
||||
return id;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int rtems_gxx_once(__gthread_once_t *once, void (*func) ())
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );
|
||||
#endif
|
||||
if( *once == 0 )
|
||||
{
|
||||
/*
|
||||
* NOTE: could not use the call to disable "preemption", it causes
|
||||
* one exception. Somebody might want to investiage it further
|
||||
* sometime later.
|
||||
*/
|
||||
_Thread_Disable_dispatch();
|
||||
*once = 1;
|
||||
(*func)();
|
||||
_Thread_Enable_dispatch();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
|
||||
{
|
||||
/* Ok, this can be a bit tricky. We are going to return a "key" as a
|
||||
* pointer to the buffer that will hold the value of the key itself.
|
||||
* We have to to this, becuase the others functions on this interface
|
||||
* deal with the value of the key, as used with the POSIX API.
|
||||
*/
|
||||
/* Do not pull your hair, trust me this works. :-) */
|
||||
__gthread_key_t *new_key = ( __gthread_key_t * )malloc( sizeof( __gthread_key_t ) );
|
||||
*key = ( __gthread_key_t )new_key;
|
||||
*new_key = NULL;
|
||||
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key );
|
||||
#endif
|
||||
/* register with RTEMS the buffer that will hold the key values */
|
||||
if( rtems_task_variable_add( RTEMS_SELF, (void **)new_key, NULL ) == RTEMS_SUCCESSFUL )
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int rtems_gxx_key_dtor (__gthread_key_t key, void *ptr)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: dtor key=%x, ptr=%x\n", key, ptr );
|
||||
#endif
|
||||
*(void **)key = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rtems_gxx_key_delete (__gthread_key_t key)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: delete key=%x\n", key );
|
||||
#endif
|
||||
/* register with RTEMS the buffer that will hold the key values */
|
||||
if( rtems_task_variable_delete( RTEMS_SELF, (void **)key ) == RTEMS_SUCCESSFUL )
|
||||
{
|
||||
if( key ) free( (void *)key );
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void *rtems_gxx_getspecific(__gthread_key_t key)
|
||||
{
|
||||
void *p= 0;
|
||||
|
||||
/* register with RTEMS the buffer that will hold the key values */
|
||||
if( rtems_task_variable_get( RTEMS_SELF, (void **)key, &p ) == RTEMS_SUCCESSFUL )
|
||||
{
|
||||
/* We do not have to do this, but what the heck ! */
|
||||
p= *( void **)key;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* fisrt time, always set to zero, it is unknown the value that the others
|
||||
* threads are using at the moment of this call
|
||||
*/
|
||||
if( rtems_task_variable_add( RTEMS_SELF, (void **)key, NULL ) != RTEMS_SUCCESSFUL )
|
||||
{
|
||||
__terminate ();
|
||||
}
|
||||
*( void ** )key = (void *)0;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: getspecific key=%x, ptr=%x, id=%x\n", key, p, get_tid() );
|
||||
#endif
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
int rtems_gxx_setspecific(__gthread_key_t key, const void *ptr)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: setspecific key=%x, ptr=%x, id=%x\n", key, ptr, get_tid() );
|
||||
#endif
|
||||
/* register with RTEMS the buffer that will hold the key values */
|
||||
if( rtems_task_variable_add( RTEMS_SELF, (void **)key, NULL ) == RTEMS_SUCCESSFUL )
|
||||
{
|
||||
/* now let's set the proper value */
|
||||
*( void ** )key = (void *)ptr;
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MUTEX support
|
||||
*/
|
||||
void rtems_gxx_mutex_init (__gthread_mutex_t *mutex)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: mutex init =%X\n", *mutex );
|
||||
#endif
|
||||
if( rtems_semaphore_create( rtems_build_name ('G', 'C', 'C', '2'),
|
||||
1,
|
||||
RTEMS_PRIORITY|RTEMS_BINARY_SEMAPHORE
|
||||
|RTEMS_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING|RTEMS_LOCAL,
|
||||
0,
|
||||
(rtems_id *)mutex ) != RTEMS_SUCCESSFUL )
|
||||
{
|
||||
__terminate ();
|
||||
}
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: mutex init complete =%X\n", *mutex );
|
||||
#endif
|
||||
}
|
||||
|
||||
int rtems_gxx_mutex_lock (__gthread_mutex_t *mutex)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: lock mutex=%X\n", *mutex );
|
||||
#endif
|
||||
return ( rtems_semaphore_obtain( (rtems_id)*mutex,
|
||||
RTEMS_WAIT, RTEMS_NO_TIMEOUT ) == RTEMS_SUCCESSFUL) ? 0 : -1;
|
||||
}
|
||||
|
||||
int rtems_gxx_mutex_trylock (__gthread_mutex_t *mutex)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: trylock mutex=%X\n", *mutex );
|
||||
#endif
|
||||
return (rtems_semaphore_obtain ((rtems_id)*mutex,
|
||||
RTEMS_NO_WAIT, 0) == RTEMS_SUCCESSFUL) ? 0 : -1;
|
||||
}
|
||||
|
||||
int rtems_gxx_mutex_unlock (__gthread_mutex_t *mutex)
|
||||
{
|
||||
#ifdef DEBUG_GXX_WRAPPERS
|
||||
printk( "gxx_wrappers: unlock mutex=%X\n", *mutex );
|
||||
#endif
|
||||
return (rtems_semaphore_release( (rtems_id)*mutex ) == RTEMS_SUCCESSFUL) ? 0 :-1;
|
||||
}
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ int rtems_libio_is_open_files_in_fs(
|
||||
* Look for any active file descriptor entry.
|
||||
*/
|
||||
|
||||
for (iop=rtems_libio_iops,i=0; i <= rtems_libio_number_iops; iop++, i++){
|
||||
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
|
||||
|
||||
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
|
||||
|
||||
@@ -304,7 +304,7 @@ int rtems_libio_is_file_open(
|
||||
* Look for any active file descriptor entry.
|
||||
*/
|
||||
|
||||
for (iop=rtems_libio_iops,i=0; i <= rtems_libio_number_iops; iop++, i++){
|
||||
for (iop=rtems_libio_iops,i=0; i < rtems_libio_number_iops; iop++, i++){
|
||||
if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
|
||||
|
||||
/*
|
||||
|
||||
@@ -120,7 +120,7 @@ void RTEMS_Malloc_Initialize(
|
||||
rtems_build_name( 'H', 'E', 'A', 'P' ),
|
||||
starting_address,
|
||||
length,
|
||||
CPU_ALIGNMENT,
|
||||
CPU_HEAP_ALIGNMENT,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&RTEMS_Malloc_Heap
|
||||
);
|
||||
|
||||
@@ -112,7 +112,7 @@ scandir(dirname, namelist, select, dcomp)
|
||||
p->d_ino = d->d_ino;
|
||||
p->d_reclen = d->d_reclen;
|
||||
p->d_namlen = d->d_namlen;
|
||||
strncpy(p->d_name, d->d_name, p->d_namlen + 1);
|
||||
strncpy(d->d_name, p->d_name, p->d_namlen + 1);
|
||||
/*
|
||||
* Check to make sure the array has space left and
|
||||
* realloc the maximum size.
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
* FreeBSD does not support a full POSIX termios so we have to help it out
|
||||
*/
|
||||
|
||||
|
||||
#if defined(__FreeBSD__)
|
||||
#define XTABS 0
|
||||
#define ONLRET 0
|
||||
@@ -40,6 +39,14 @@
|
||||
#define IUCLC 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Cygwin does not define these
|
||||
*/
|
||||
|
||||
#if defined(__CYGWIN__)
|
||||
#define ECHOPRT 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The size of the cooked buffer
|
||||
*/
|
||||
@@ -238,7 +245,7 @@ rtems_termios_open (
|
||||
*/
|
||||
tty->termios.c_iflag = BRKINT | ICRNL | IMAXBEL;
|
||||
tty->termios.c_oflag = OPOST | ONLCR | XTABS;
|
||||
tty->termios.c_cflag = B9600 | CS8 | CREAD;
|
||||
tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
|
||||
tty->termios.c_lflag = ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
|
||||
|
||||
tty->termios.c_cc[VINTR] = '\003';
|
||||
@@ -256,8 +263,8 @@ rtems_termios_open (
|
||||
tty->termios.c_cc[VWERASE] = '\027';
|
||||
tty->termios.c_cc[VLNEXT] = '\026';
|
||||
|
||||
/* setup flow control mode, clear flow control flags */
|
||||
tty->flow_ctrl = FL_MDXON;
|
||||
/* start with no flow control, clear flow control flags */
|
||||
tty->flow_ctrl = 0;
|
||||
/*
|
||||
* set low/highwater mark for XON/XOFF support
|
||||
*/
|
||||
|
||||
@@ -6,15 +6,19 @@
|
||||
|
||||
#include <rtems.h>
|
||||
|
||||
#if 0
|
||||
static int first_time; /* assumed to be zeroed by BSS initialization */
|
||||
#endif
|
||||
|
||||
void rtems_termios_reserve_resources (
|
||||
rtems_configuration_table *configuration,
|
||||
rtems_unsigned32 number_of_devices
|
||||
)
|
||||
{
|
||||
#if 0
|
||||
rtems_api_configuration_table *rtems_config;
|
||||
|
||||
|
||||
if (!configuration)
|
||||
rtems_fatal_error_occurred (0xFFF0F001);
|
||||
rtems_config = configuration->RTEMS_api_configuration;
|
||||
@@ -24,5 +28,6 @@ void rtems_termios_reserve_resources (
|
||||
rtems_config->maximum_semaphores += 1;
|
||||
first_time = 1;
|
||||
rtems_config->maximum_semaphores += (4 * number_of_devices);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ int unmount(
|
||||
int status;
|
||||
rtems_filesystem_location_info_t temp_loc;
|
||||
rtems_filesystem_mount_table_entry_t temp_mt_entry;
|
||||
int result;
|
||||
|
||||
/*
|
||||
* Are there any file systems below the mount_path specified
|
||||
@@ -101,7 +100,7 @@ int unmount(
|
||||
/*
|
||||
* Allow the file system being mounted on to do its cleanup.
|
||||
* XXX - Did I change these correctly ??? It looks like either I did
|
||||
* XXX this backwards or the IMFS_unmount and IMFS_fsumount are swaped.
|
||||
* XXX this backwards or the IMFS_unmount and IMFS_fsumount are swapped.
|
||||
* XXX Add to the mt_point_node unmount to set the mt_entry back to null
|
||||
* XXX I will step off in space when evaluating past the end of the node.
|
||||
*/
|
||||
@@ -120,12 +119,6 @@ int unmount(
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allow the file system to clean up.
|
||||
*/
|
||||
|
||||
result = (*temp_loc.ops->fsunmount_me)( temp_loc.mt_entry );
|
||||
|
||||
/*
|
||||
* Extract the mount table entry from the chain
|
||||
*/
|
||||
@@ -140,8 +133,7 @@ int unmount(
|
||||
free( temp_loc.mt_entry );
|
||||
rtems_filesystem_freenode( &temp_loc );
|
||||
|
||||
return result;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -157,9 +157,9 @@ struct IMFS_jnode_tt {
|
||||
uid_t st_uid; /* User ID of owner */
|
||||
gid_t st_gid; /* Group ID of owner */
|
||||
|
||||
time_t st_atime; /* Time of last access */
|
||||
time_t st_mtime; /* Time of last modification */
|
||||
time_t st_ctime; /* Time of last status change */
|
||||
time_t stat_atime; /* Time of last access */
|
||||
time_t stat_mtime; /* Time of last modification */
|
||||
time_t stat_ctime; /* Time of last status change */
|
||||
IMFS_jnode_types_t type; /* Type of this entry */
|
||||
IMFS_types_union info;
|
||||
};
|
||||
@@ -168,29 +168,29 @@ struct IMFS_jnode_tt {
|
||||
do { \
|
||||
struct timeval tv; \
|
||||
gettimeofday( &tv, 0 ); \
|
||||
_jnode->st_atime = (time_t) tv.tv_sec; \
|
||||
_jnode->stat_atime = (time_t) tv.tv_sec; \
|
||||
} while (0)
|
||||
|
||||
#define IMFS_update_mtime( _jnode ) \
|
||||
do { \
|
||||
struct timeval tv; \
|
||||
gettimeofday( &tv, 0 ); \
|
||||
_jnode->st_mtime = (time_t) tv.tv_sec; \
|
||||
_jnode->stat_mtime = (time_t) tv.tv_sec; \
|
||||
} while (0)
|
||||
|
||||
#define IMFS_update_ctime( _jnode ) \
|
||||
do { \
|
||||
struct timeval tv; \
|
||||
gettimeofday( &tv, 0 ); \
|
||||
_jnode->st_ctime = (time_t) tv.tv_sec; \
|
||||
_jnode->stat_ctime = (time_t) tv.tv_sec; \
|
||||
} while (0)
|
||||
|
||||
#define IMFS_atime_mtime_update( _jnode ) \
|
||||
do { \
|
||||
struct timeval tv; \
|
||||
gettimeofday( &tv, 0 ); \
|
||||
_jnode->st_mtime = (time_t) tv.tv_sec; \
|
||||
_jnode->st_atime = (time_t) tv.tv_sec; \
|
||||
_jnode->stat_mtime = (time_t) tv.tv_sec; \
|
||||
_jnode->stat_atime = (time_t) tv.tv_sec; \
|
||||
} while (0)
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -72,9 +72,9 @@ IMFS_jnode_t *IMFS_create_node(
|
||||
|
||||
gettimeofday( &tv, 0 );
|
||||
|
||||
node->st_atime = (time_t) tv.tv_sec;
|
||||
node->st_mtime = (time_t) tv.tv_sec;
|
||||
node->st_ctime = (time_t) tv.tv_sec;
|
||||
node->stat_atime = (time_t) tv.tv_sec;
|
||||
node->stat_mtime = (time_t) tv.tv_sec;
|
||||
node->stat_ctime = (time_t) tv.tv_sec;
|
||||
|
||||
/*
|
||||
* Set the type specific information
|
||||
|
||||
@@ -219,9 +219,9 @@ int imfs_dir_lseek(
|
||||
* dirent structure
|
||||
* st_blksize 0
|
||||
* st_blocks 0
|
||||
* st_atime time of last access
|
||||
* st_mtime time of last modification
|
||||
* st_ctime time of the last change
|
||||
* stat_atime time of last access
|
||||
* stat_mtime time of last modification
|
||||
* stat_ctime time of the last change
|
||||
*
|
||||
* This information will be returned to the calling function in a -stat- struct
|
||||
*
|
||||
@@ -248,9 +248,9 @@ int imfs_dir_fstat(
|
||||
buf->st_rdev = 0ll;
|
||||
buf->st_blksize = 0;
|
||||
buf->st_blocks = 0;
|
||||
buf->st_atime = the_jnode->st_atime;
|
||||
buf->st_mtime = the_jnode->st_mtime;
|
||||
buf->st_ctime = the_jnode->st_ctime;
|
||||
buf->st_atime = the_jnode->stat_atime;
|
||||
buf->st_mtime = the_jnode->stat_mtime;
|
||||
buf->st_ctime = the_jnode->stat_ctime;
|
||||
|
||||
buf->st_size = 0;
|
||||
|
||||
|
||||
@@ -50,9 +50,9 @@ int IMFS_stat(
|
||||
buf->st_uid = the_jnode->st_uid;
|
||||
buf->st_gid = the_jnode->st_gid;
|
||||
|
||||
buf->st_atime = the_jnode->st_atime;
|
||||
buf->st_mtime = the_jnode->st_mtime;
|
||||
buf->st_ctime = the_jnode->st_ctime;
|
||||
buf->st_atime = the_jnode->stat_atime;
|
||||
buf->st_mtime = the_jnode->stat_mtime;
|
||||
buf->st_ctime = the_jnode->stat_ctime;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@ int IMFS_utime(
|
||||
|
||||
the_jnode = (IMFS_jnode_t *) pathloc->node_access;
|
||||
|
||||
the_jnode->st_atime = actime;
|
||||
the_jnode->st_mtime = modtime;
|
||||
the_jnode->stat_atime = actime;
|
||||
the_jnode->stat_mtime = modtime;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ SUBDIRS = include arpa kern machine sys vm lib libc net netinet nfs rtems \
|
||||
rtems_servers pppd rtems_webserver wrapup
|
||||
|
||||
EXTRA_DIST = CHANGELOG bpfilter.h loop.h netdb.h opt_ipfw.h opt_mrouting.h \
|
||||
opt_tcpdebug.h poll.h resolv.h syslog.h
|
||||
opt_tcpdebug.h poll.h resolv.h syslog.h memory.h
|
||||
|
||||
include $(top_srcdir)/../../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -4,6 +4,18 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
EXTRA_DIST = ftp.h inet.h nameser.h nameser_compat.h telnet.h
|
||||
H_FILES = ftp.h inet.h nameser.h nameser_compat.h telnet.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/arpa $(H_FILES:%=$(PROJECT_INCLUDE)/arpa/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/arpa:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/arpa/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -111,7 +111,7 @@ rtems_bsdnet_synchronize_ntp (int interval, rtems_task_priority priority)
|
||||
printf ("Can't set socket receive timeout: %s", strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
memset (&myAddr, sizeof myAddr, 0);
|
||||
memset (&myAddr, 0, sizeof myAddr);
|
||||
myAddr.sin_family = AF_INET;
|
||||
myAddr.sin_port = htons (123);
|
||||
myAddr.sin_addr.s_addr = htonl (INADDR_ANY);
|
||||
@@ -126,14 +126,14 @@ rtems_bsdnet_synchronize_ntp (int interval, rtems_task_priority priority)
|
||||
* server out there somewhere.
|
||||
*/
|
||||
if (rtems_bsdnet_ntpserver_count > 0) {
|
||||
memset (&farAddr, sizeof farAddr, 0);
|
||||
memset (&farAddr, 0, sizeof farAddr);
|
||||
farAddr.sin_family = AF_INET;
|
||||
farAddr.sin_port = htons (123);
|
||||
/*
|
||||
* For now, try only the first server.
|
||||
*/
|
||||
farAddr.sin_addr = rtems_bsdnet_ntpserver[0];
|
||||
memset (&packet, sizeof packet, 0);
|
||||
memset (&packet, 0, sizeof packet);
|
||||
packet.li_vn_mode = (3 << 3) | 3; /* NTP version 3, client */
|
||||
i = sendto (s, &packet, sizeof packet, 0, (struct sockaddr *)&farAddr, sizeof farAddr);
|
||||
if (i != sizeof packet) {
|
||||
|
||||
@@ -7,14 +7,15 @@ AUTOMAKE_OPTIONS = foreign 1.4 no-installman
|
||||
LIBNAME = lib.a
|
||||
LIB = $(ARCH)/$(LIBNAME)
|
||||
|
||||
C_FILES = base64.c gethostbydns.c gethostbyht.c gethostbynis.c \
|
||||
gethostnamadr.c getnetbydns.c getnetbyht.c getnetbynis.c getnetnamadr.c \
|
||||
getproto.c getprotoent.c getprotoname.c getservbyname.c getservbyport.c \
|
||||
getservent.c herror.c inet_addr.c inet_lnaof.c inet_makeaddr.c \
|
||||
inet_network.c inet_ntoa.c inet_ntop.c inet_pton.c map_v4v6.c \
|
||||
nsap_addr.c ns_name.c ns_netint.c ns_parse.c ns_print.c ns_ttl.c \
|
||||
res_comp.c res_data.c res_debug.c res_init.c res_mkquery.c \
|
||||
res_mkupdate.c res_query.c res_send.c res_stubs.c res_update.c strsep.c
|
||||
C_FILES = addr2ascii.c ascii2addr.c base64.c gethostbydns.c gethostbyht.c \
|
||||
gethostbynis.c gethostnamadr.c getnetbydns.c getnetbyht.c getnetbynis.c \
|
||||
getnetnamadr.c getproto.c getprotoent.c getprotoname.c getservbyname.c \
|
||||
getservbyport.c getservent.c herror.c inet_addr.c inet_lnaof.c \
|
||||
inet_makeaddr.c inet_netof.c inet_network.c inet_ntoa.c inet_ntop.c \
|
||||
inet_pton.c linkaddr.c map_v4v6.c nsap_addr.c ns_name.c ns_netint.c \
|
||||
ns_parse.c ns_print.c ns_ttl.c res_comp.c res_data.c res_debug.c \
|
||||
res_init.c res_mkquery.c res_mkupdate.c res_query.c res_send.c \
|
||||
res_stubs.c res_update.c strsep.c
|
||||
C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
|
||||
|
||||
OBJS = $(C_O_FILES)
|
||||
@@ -30,8 +31,7 @@ man_MANS = addr2ascii.3 byteorder.3 ethers.3 gethostbyname.3 getnetent.3 \
|
||||
# Add local stuff here using +=
|
||||
#
|
||||
|
||||
AM_CPPFLAGS += -DNOPOLL -DNOSELECT
|
||||
AM_CPPFLAGS += -U__STRICT_ANSI__
|
||||
AM_CPPFLAGS += -DNOPOLL -DNOSELECT -U__STRICT_ANSI__
|
||||
|
||||
$(LIB): $(OBJS)
|
||||
$(make-library)
|
||||
@@ -47,7 +47,7 @@ EXTRA_DIST = addr2ascii.3 addr2ascii.c ascii2addr.c base64.c byteorder.3 \
|
||||
getprotoent.c getprotoname.c getservbyname.c getservbyport.c \
|
||||
getservent.3 getservent.c herror.c inet.3 inet_addr.c inet_lnaof.c \
|
||||
inet_makeaddr.c inet_net_ntop.c inet_net_pton.c inet_neta.c inet_netof.c \
|
||||
inet_network.c inet_ntoa.c inet_ntop.c inet_pton.c iso_addr.3 iso_addr.c \
|
||||
inet_netof.c inet_network.c inet_ntoa.c inet_ntop.c inet_pton.c map_v4v6.c \
|
||||
linkaddr.3 linkaddr.c map_v4v6.c ns.3 ns_addr.c ns_name.c ns_netint.c \
|
||||
ns_ntoa.c ns_parse.c ns_print.c ns_ttl.c nsap_addr.c rcmd.3 rcmd.c \
|
||||
recv.c res_comp.c res_config.h res_data.c res_debug.c res_init.c \
|
||||
|
||||
@@ -4,7 +4,20 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
EXTRA_DIST = conf.h cpu.h cpufunc.h endian.h in_cksum.h limits.h param.h \
|
||||
H_FILES = conf.h cpu.h cpufunc.h endian.h in_cksum.h limits.h param.h \
|
||||
types.h vmparam.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/machine \
|
||||
$(H_FILES:%=$(PROJECT_INCLUDE)/machine/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/machine:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/machine/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
/*
|
||||
* Dummy include file for FreeBSD routines
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
@@ -26,12 +26,24 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
|
||||
$(LIB): $(OBJS)
|
||||
$(make-library)
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(LIB)
|
||||
all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
|
||||
|
||||
.PRECIOUS: $(LIB)
|
||||
|
||||
EXTRA_DIST = bpf.h ethernet.h if.c if.h if_arp.h if_dl.h if_ethersubr.c \
|
||||
if_llc.h if_loop.c if_ppp.h if_types.h netisr.h ppp-comp.h ppp_defs.h \
|
||||
radix.c radix.h raw_cb.c raw_cb.h raw_usrreq.c route.c route.h rtsock.c
|
||||
EXTRA_DIST = if.c if_ethersubr.c if_loop.c \
|
||||
radix.c raw_cb.c raw_usrreq.c route.c rtsock.c
|
||||
|
||||
H_FILES = bpf.h ethernet.h if.h if_arp.h if_dl.h if_llc.h if_ppp.h if_types.h \
|
||||
netisr.h ppp-comp.h ppp_defs.h radix.h raw_cb.h route.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/net $(H_FILES:%=$(PROJECT_INCLUDE)/net/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/net:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/net/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -118,6 +118,7 @@ rtems_bsdnet_loopattach(dummy)
|
||||
ifp->if_type = IFT_LOOP;
|
||||
ifp->if_hdrlen = 0;
|
||||
ifp->if_addrlen = 0;
|
||||
ifp->if_snd.ifq_maxlen = ifqmaxlen;
|
||||
if_attach(ifp);
|
||||
#if NBPFILTER > 0
|
||||
bpfattach(ifp, DLT_NULL, sizeof(u_int));
|
||||
|
||||
@@ -28,16 +28,30 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
|
||||
$(LIB): $(OBJS)
|
||||
$(make-library)
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(LIB)
|
||||
all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
|
||||
|
||||
.PRECIOUS: $(LIB)
|
||||
|
||||
EXTRA_DIST = icmp_var.h if_ether.c if_ether.h igmp.c igmp.h igmp_var.h in.c \
|
||||
in.h in_cksum.c in_cksum_i386.c in_cksum_m68k.c in_cksum_powerpc.c \
|
||||
in_pcb.c in_pcb.h in_proto.c in_rmx.c in_systm.h in_var.h ip.h \
|
||||
ip_divert.c ip_fw.c ip_fw.h ip_icmp.c ip_icmp.h ip_input.c ip_mroute.c \
|
||||
ip_mroute.h ip_output.c ip_var.h raw_ip.c tcp.h tcp_debug.c tcp_debug.h \
|
||||
tcp_fsm.h tcp_input.c tcp_output.c tcp_seq.h tcp_subr.c tcp_timer.c \
|
||||
tcp_timer.h tcp_usrreq.c tcp_var.h tcpip.h udp.h udp_usrreq.c udp_var.h
|
||||
EXTRA_DIST = if_ether.c igmp.c igmp_var.h in.c in_cksum.c in_cksum_i386.c \
|
||||
in_cksum_m68k.c in_cksum_powerpc.c in_pcb.c in_proto.c in_rmx.c \
|
||||
ip_divert.c ip_fw.c ip_icmp.c ip_input.c ip_mroute.c ip_output.c \
|
||||
raw_ip.c tcp_debug.c tcp_input.c tcp_output.c tcp_subr.c tcp_timer.c \
|
||||
tcp_usrreq.c udp_usrreq.c
|
||||
|
||||
H_FILES = icmp_var.h if_ether.h igmp.h igmp_var.h in.h \
|
||||
in_pcb.h in_systm.h in_var.h ip.h ip_fw.h ip_icmp.h \
|
||||
ip_mroute.h ip_var.h tcp.h tcp_debug.h tcp_fsm.h tcp_seq.h \
|
||||
tcp_timer.h tcp_var.h tcpip.h udp.h udp_var.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/netinet \
|
||||
$(H_FILES:%=$(PROJECT_INCLUDE)/netinet/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/netinet:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/netinet/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -255,6 +255,9 @@ struct in_addr {
|
||||
#define INADDR_MAX_LOCAL_GROUP (u_long)0xe00000ff /* 224.0.0.255 */
|
||||
|
||||
#define IN_LOOPBACKNET 127 /* official! */
|
||||
#ifndef INADDR_LOOPBACK
|
||||
#define INADDR_LOOPBACK (u_long)0x7F000001 /* 127.0.0.1 */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Socket address, internet style.
|
||||
|
||||
@@ -25,11 +25,23 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
|
||||
$(LIB): $(OBJS)
|
||||
$(make-library)
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(LIB)
|
||||
all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
|
||||
|
||||
.PRECIOUS: $(LIB)
|
||||
|
||||
EXTRA_DIST = bootp_subr.c krpc.h nfs.h nfsdiskless.h nfsproto.h rpcv2.h \
|
||||
xdr_subs.h
|
||||
EXTRA_DIST = bootp_subr.c
|
||||
|
||||
H_FILES = krpc.h nfs.h nfsdiskless.h nfsproto.h rpcv2.h xdr_subs.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/nfs $(H_FILES:%=$(PROJECT_INCLUDE)/nfs/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/nfs:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/nfs/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -15,6 +15,19 @@ C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
|
||||
|
||||
OBJS = $(C_O_FILES)
|
||||
|
||||
H_FILES = rtems_bsdnet.h rtems_bsdnet_internal.h tftp.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems $(H_FILES:%=$(PROJECT_INCLUDE)/rtems/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/rtems:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/rtems/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../../../automake/lib.am
|
||||
|
||||
@@ -28,14 +41,12 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
|
||||
$(LIB): $(OBJS)
|
||||
$(make-library)
|
||||
|
||||
all-local: $(ARCH) $(OBJS) $(LIB)
|
||||
all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
|
||||
|
||||
.PRECIOUS: $(LIB)
|
||||
|
||||
EXTRA_DIST = issetugid.c rtems_bootp.c rtems_bsdnet.h \
|
||||
rtems_bsdnet_internal.h rtems_glue.c rtems_select.c rtems_showicmpstat.c \
|
||||
EXTRA_DIST = issetugid.c rtems_bootp.c rtems_glue.c rtems_select.c rtems_showicmpstat.c \
|
||||
rtems_showifstat.c rtems_showipstat.c rtems_showmbuf.c rtems_showroute.c \
|
||||
rtems_showtcpstat.c rtems_showudpstat.c rtems_syscall.c sghostname.c \
|
||||
tftp.h
|
||||
rtems_showtcpstat.c rtems_showudpstat.c rtems_syscall.c sghostname.c
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -136,11 +136,8 @@ connect (int s, struct sockaddr *name, int namelen)
|
||||
return -1;
|
||||
}
|
||||
error = soconnect (so, nam);
|
||||
if (error) {
|
||||
errno = error;
|
||||
rtems_bsdnet_semaphore_release ();
|
||||
return -1;
|
||||
}
|
||||
if (error)
|
||||
goto bad;
|
||||
if ((so->so_state & SS_NBIO) && (so->so_state & SS_ISCONNECTING)) {
|
||||
m_freem(nam);
|
||||
errno = EINPROGRESS;
|
||||
@@ -148,15 +145,20 @@ connect (int s, struct sockaddr *name, int namelen)
|
||||
return -1;
|
||||
}
|
||||
while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {
|
||||
so->so_error = soconnsleep (so);
|
||||
error = soconnsleep (so);
|
||||
if (error)
|
||||
break;
|
||||
}
|
||||
if (error == 0) {
|
||||
error = so->so_error;
|
||||
so->so_error = 0;
|
||||
}
|
||||
bad:
|
||||
so->so_state &= ~SS_ISCONNECTING;
|
||||
m_freem (nam);
|
||||
if (error == 0)
|
||||
if (error)
|
||||
errno = error;
|
||||
else
|
||||
ret = 0;
|
||||
rtems_bsdnet_semaphore_release ();
|
||||
return ret;
|
||||
@@ -605,6 +607,7 @@ getpeersockname (int s, struct sockaddr *name, int *namelen, int pflag)
|
||||
else
|
||||
error = (*so->so_proto->pr_usrreqs->pru_sockaddr)(so, m);
|
||||
if (error) {
|
||||
m_freem(m);
|
||||
errno = error;
|
||||
rtems_bsdnet_semaphore_release ();
|
||||
return -1;
|
||||
|
||||
@@ -4,10 +4,22 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
EXTRA_DIST = buf.h callout.h cdefs.h conf.h domain.h filio.h ioccom.h \
|
||||
H_FILES = buf.h callout.h cdefs.h conf.h domain.h filio.h ioccom.h \
|
||||
ioctl.h kernel.h libkern.h malloc.h mbuf.h mount.h param.h proc.h \
|
||||
protosw.h queue.h reboot.h resourcevar.h rtprio.h select.h signalvar.h \
|
||||
socket.h socketvar.h sockio.h sysctl.h syslimits.h syslog.h systm.h \
|
||||
ttycom.h ttydefaults.h ucred.h uio.h
|
||||
ttycom.h ttydefaults.h ucred.h uio.h un.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys $(H_FILES:%=$(PROJECT_INCLUDE)/sys/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/sys:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/sys/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 1982, 1986, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)un.h 8.3 (Berkeley) 2/19/95
|
||||
* $FreeBSD: src/sys/sys/un.h,v 1.17 1999/12/29 04:24:49 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef _SYS_UN_H_
|
||||
#define _SYS_UN_H_
|
||||
|
||||
/*
|
||||
* Definitions for UNIX IPC domain.
|
||||
*/
|
||||
struct sockaddr_un {
|
||||
u_char sun_len; /* sockaddr len including null */
|
||||
u_char sun_family; /* AF_UNIX */
|
||||
char sun_path[104]; /* path name (gag) */
|
||||
};
|
||||
|
||||
#ifdef _KERNEL
|
||||
struct mbuf;
|
||||
struct socket;
|
||||
|
||||
int uipc_usrreq __P((struct socket *so, int req, struct mbuf *m,
|
||||
struct mbuf *nam, struct mbuf *control));
|
||||
int unp_connect2 __P((struct socket *so, struct socket *so2));
|
||||
void unp_dispose __P((struct mbuf *m));
|
||||
int unp_externalize __P((struct mbuf *rights));
|
||||
void unp_init __P((void));
|
||||
extern struct pr_usrreqs uipc_usrreqs;
|
||||
#else /* !_KERNEL */
|
||||
|
||||
/* actual length of an initialized sockaddr_un */
|
||||
#define SUN_LEN(su) \
|
||||
(sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
|
||||
|
||||
#endif /* _KERNEL */
|
||||
|
||||
#endif /* !_SYS_UN_H_ */
|
||||
|
||||
@@ -4,6 +4,19 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
EXTRA_DIST = vm.h vm_extern.h vm_kern.h vm_param.h
|
||||
H_FILES = vm.h vm_extern.h vm_kern.h vm_param.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/vm \
|
||||
$(H_FILES:%=$(PROJECT_INCLUDE)/vm/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/vm:
|
||||
@$(mkinstalldirs) $@
|
||||
|
||||
$(PROJECT_INCLUDE)/vm/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -7,5 +7,7 @@ ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
|
||||
|
||||
SUBDIRS = include src
|
||||
|
||||
EXTRA_DIST = README_RTEMS
|
||||
|
||||
include $(top_srcdir)/../../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
USING RPC/XDR ON RTEMS
|
||||
======================
|
||||
For the most part, programmers using RPC/XDR routines on RTEMS
|
||||
can proceed as if they were to be using a POSIX/UNIX system.
|
||||
The only significant changes are those to start the portmapper
|
||||
and to allow use of RPC/XDR by multiple threads.
|
||||
|
||||
Starting the portmapper
|
||||
=======================
|
||||
The SUN portmapper program has been modified to run as an RTEMS
|
||||
task. Applications which need the portmapper can start this
|
||||
task by calling:
|
||||
int rtems_rpc_start_portmapper (int priority);
|
||||
The return value is an RTEMS status code.
|
||||
|
||||
Multi-threaded operation
|
||||
========================
|
||||
The RPC/XDR package has been modified to allow for multiple RTEMS
|
||||
tasks to use RPC/XDR routines. If more than one task is to call
|
||||
an RPC/XDR routine, the additional tasks must call:
|
||||
int rtems_rpc_task_init(void);
|
||||
before calling any RPC/XDR routines. For example, the portmapper
|
||||
calls this routine since the portmapper uses RPC/XDR routines in
|
||||
a separate thread.
|
||||
The return value is an RTEMS status code.
|
||||
|
||||
|
||||
Porting Notes
|
||||
=============
|
||||
Most of the FreeBSD rpc library ports to RTEMS with little
|
||||
or no modification beyond that required to provide for operation
|
||||
in a multitasking environment. Multitasking operation was
|
||||
provided by moving all `static persistence' variables into
|
||||
a single structure and using an RTEMS task variable to point
|
||||
to that structure.
|
||||
|
||||
Some of the library, however, has not made it into the RTEMS
|
||||
implementation. FreeBSD source files which have been left out include:
|
||||
- Files which provide RPC to the AF_UNIX address family:
|
||||
clnt_unix.c
|
||||
svc_unix.c
|
||||
An `ifndef __rtems__' was added to clnt_generic.c because clnt_unix.c
|
||||
was omitted.
|
||||
- Files which need NIS:
|
||||
auth_time.c
|
||||
- Files which provide DES authentication:
|
||||
auth_des.c
|
||||
authdes_prot.c
|
||||
crypt_client.c
|
||||
des_crypt.c
|
||||
des_soft.c
|
||||
getpublickey.c
|
||||
key_call.c
|
||||
key_prot_xdr.c
|
||||
svc_auth_des.c
|
||||
|
||||
The FreeBSD xdr source compiles and runs on RTEMS without modification.
|
||||
|
||||
The original source was obtained from:
|
||||
ftp://ftp.FreeBSD.org/pub/FreeBSD/
|
||||
branches/4.0-stable/src/lib/libc/rpc
|
||||
branches/4.0-stable/src/lib/libc/xdr
|
||||
branches/4.0-stable/src/include/rpc
|
||||
branches/4.0-stable/src/include/rpcsvc
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
SUBDIRS = rpc
|
||||
SUBDIRS = rpc rpcsvc
|
||||
|
||||
include $(top_srcdir)/../../../automake/subdirs.am
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -4,13 +4,14 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
H_FILES = auth.h rpc.h svc.h types.h clnt.h rpc_msg.h svc_auth.h xdr.h
|
||||
H_FILES = auth.h auth_des.h auth_unix.h clnt.h des.h des_crypt.h pmap_clnt.h \
|
||||
pmap_prot.h pmap_rmt.h rpc.h rpc_com.h rpc_msg.h svc.h svc_auth.h \
|
||||
types.h xdr.h
|
||||
|
||||
noinst_HEADERS = $(H_FILES)
|
||||
|
||||
if HAS_NETWORKING
|
||||
PREINSTALL_FILES = \
|
||||
$(PROJECT_INCLUDE)/rpc \
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/rpc \
|
||||
$(H_FILES:%=$(PROJECT_INCLUDE)/rpc/%)
|
||||
|
||||
$(PROJECT_INCLUDE)/rpc:
|
||||
@@ -19,8 +20,6 @@ $(PROJECT_INCLUDE)/rpc/%.h: %.h
|
||||
$(INSTALL_DATA) $< $@
|
||||
endif
|
||||
|
||||
all-am: $(PREINSTALL_FILES)
|
||||
debug-am: $(PREINSTALL_FILES)
|
||||
profile-am: $(PREINSTALL_FILES)
|
||||
all-local: $(PREINSTALL_FILES)
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_AUTH_H
|
||||
#define RPC_AUTH_H
|
||||
|
||||
/* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,6 +25,10 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)auth.h 1.17 88/02/08 SMI
|
||||
* from: @(#)auth.h 2.3 88/08/07 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/auth.h,v 1.15 1999/08/27 23:45:02 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -41,6 +41,10 @@
|
||||
* "sessions".
|
||||
*/
|
||||
|
||||
#ifndef _RPC_AUTH_H
|
||||
#define _RPC_AUTH_H
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#define MAX_AUTH_BYTES 400
|
||||
#define MAXNETNAMELEN 255 /* maximum length of network user's name */
|
||||
@@ -67,13 +71,15 @@ enum auth_stat {
|
||||
|
||||
union des_block {
|
||||
struct {
|
||||
u_int32 high;
|
||||
u_int32 low;
|
||||
u_int32_t high;
|
||||
u_int32_t low;
|
||||
} key;
|
||||
char c[8];
|
||||
};
|
||||
typedef union des_block des_block;
|
||||
extern bool_t xdr_des_block();
|
||||
__BEGIN_DECLS
|
||||
extern bool_t xdr_des_block __P((XDR *, des_block *));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Authentication info. Opaque to client.
|
||||
@@ -83,21 +89,29 @@ struct opaque_auth {
|
||||
caddr_t oa_base; /* address of more auth stuff */
|
||||
u_int oa_length; /* not to exceed MAX_AUTH_BYTES */
|
||||
};
|
||||
__BEGIN_DECLS
|
||||
bool_t xdr_opaque_auth __P((XDR *xdrs, struct opaque_auth *ap));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* Auth handle, interface to client side authenticators.
|
||||
*/
|
||||
typedef struct {
|
||||
typedef struct __rpc_auth {
|
||||
struct opaque_auth ah_cred;
|
||||
struct opaque_auth ah_verf;
|
||||
union des_block ah_key;
|
||||
struct auth_ops {
|
||||
void (*ah_nextverf)();
|
||||
int (*ah_marshal)(); /* nextverf & serialize */
|
||||
int (*ah_validate)(); /* validate varifier */
|
||||
int (*ah_refresh)(); /* refresh credentials */
|
||||
void (*ah_destroy)(); /* destroy this structure */
|
||||
void (*ah_nextverf) __P((struct __rpc_auth *));
|
||||
/* nextverf & serialize */
|
||||
int (*ah_marshal) __P((struct __rpc_auth *, XDR *));
|
||||
/* validate verifier */
|
||||
int (*ah_validate) __P((struct __rpc_auth *,
|
||||
struct opaque_auth *));
|
||||
/* refresh credentials */
|
||||
int (*ah_refresh) __P((struct __rpc_auth *));
|
||||
/* destroy this structure */
|
||||
void (*ah_destroy) __P((struct __rpc_auth *));
|
||||
} *ah_ops;
|
||||
caddr_t ah_private;
|
||||
} AUTH;
|
||||
@@ -139,7 +153,6 @@ typedef struct {
|
||||
|
||||
extern struct opaque_auth _null_auth;
|
||||
|
||||
|
||||
/*
|
||||
* These are the various implementations of client side authenticators.
|
||||
*/
|
||||
@@ -153,15 +166,95 @@ extern struct opaque_auth _null_auth;
|
||||
* int len;
|
||||
* int *aup_gids;
|
||||
*/
|
||||
extern AUTH *authunix_create();
|
||||
extern AUTH *authunix_create_default(); /* takes no parameters */
|
||||
extern AUTH *authnone_create(); /* takes no parameters */
|
||||
extern AUTH *authdes_create();
|
||||
__BEGIN_DECLS
|
||||
struct sockaddr_in;
|
||||
extern AUTH *authunix_create __P((char *, int, int, int, int *));
|
||||
extern AUTH *authunix_create_default __P((void));
|
||||
extern AUTH *authnone_create __P((void));
|
||||
__END_DECLS
|
||||
|
||||
/* Forward compatibility with TI-RPC */
|
||||
#define authsys_create authunix_create
|
||||
#define authsys_create_default authunix_create_default
|
||||
|
||||
/*
|
||||
* DES style authentication
|
||||
* AUTH *authdes_create(servername, window, timehost, ckey)
|
||||
* char *servername; - network name of server
|
||||
* u_int window; - time to live
|
||||
* struct sockaddr *timehost; - optional hostname to sync with
|
||||
* des_block *ckey; - optional conversation key to use
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern AUTH *authdes_create __P(( char *, u_int, struct sockaddr *, des_block * ));
|
||||
#ifdef NOTYET
|
||||
/*
|
||||
* TI-RPC supports this call, but it requires the inclusion of
|
||||
* NIS+-specific headers which would require the inclusion of other
|
||||
* headers which would result in a tangled mess. For now, the NIS+
|
||||
* code prototypes this routine internally.
|
||||
*/
|
||||
extern AUTH *authdes_pk_create __P(( char *, netobj *, u_int,
|
||||
struct sockaddr *, des_block *,
|
||||
nis_server * ));
|
||||
#endif
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Netname manipulation routines.
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern int netname2user __P(( char *, uid_t *, gid_t *, int *, gid_t *));
|
||||
extern int netname2host __P(( char *, char *, int ));
|
||||
extern int getnetname __P(( char * ));
|
||||
extern int user2netname __P(( char *, uid_t, char * ));
|
||||
extern int host2netname __P(( char *, char *, char * ));
|
||||
extern void passwd2des __P(( char *, char * ));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Keyserv interface routines.
|
||||
* XXX Should not be here.
|
||||
*/
|
||||
#ifndef HEXKEYBYTES
|
||||
#define HEXKEYBYTES 48
|
||||
#endif
|
||||
typedef char kbuf[HEXKEYBYTES];
|
||||
typedef char *namestr;
|
||||
|
||||
struct netstarg {
|
||||
kbuf st_priv_key;
|
||||
kbuf st_pub_key;
|
||||
namestr st_netname;
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern int key_decryptsession __P(( const char *, des_block * ));
|
||||
extern int key_decryptsession_pk __P(( char *, netobj *, des_block * ));
|
||||
extern int key_encryptsession __P(( const char *, des_block * ));
|
||||
extern int key_encryptsession_pk __P(( char *, netobj *, des_block * ));
|
||||
extern int key_gendes __P(( des_block * ));
|
||||
extern int key_setsecret __P(( const char * ));
|
||||
extern int key_secretkey_is_set __P(( void ));
|
||||
extern int key_setnet __P(( struct netstarg * ));
|
||||
extern int key_get_conv __P(( char *, des_block * ));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Publickey routines.
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern int getpublickey __P(( char *, char * ));
|
||||
extern int getpublicandprivatekey __P(( char *, char * ));
|
||||
extern int getsecretkey __P(( char *, char *, char * ));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
#define AUTH_NONE 0 /* no authentication */
|
||||
#define AUTH_NULL 0 /* backward compatibility */
|
||||
#define AUTH_UNIX 1 /* unix style (uid, gids) */
|
||||
#define AUTH_SYS 1 /* forward compatibility */
|
||||
#define AUTH_SHORT 2 /* short hand unix style */
|
||||
#define AUTH_DES 3 /* des style (encrypted timestamps) */
|
||||
|
||||
#endif /* RPC_AUTH_H */
|
||||
#endif /* !_RPC_AUTH_H */
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
/* @(#)auth_des.h 2.2 88/07/29 4.0 RPCSRC; from 1.3 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 by Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* auth_des.h, Protocol for DES style authentication for RPC
|
||||
*/
|
||||
|
||||
#ifndef _AUTH_DES_
|
||||
#define _AUTH_DES_
|
||||
|
||||
/*
|
||||
* There are two kinds of "names": fullnames and nicknames
|
||||
*/
|
||||
enum authdes_namekind {
|
||||
ADN_FULLNAME,
|
||||
ADN_NICKNAME
|
||||
};
|
||||
|
||||
/*
|
||||
* A fullname contains the network name of the client,
|
||||
* a conversation key and the window
|
||||
*/
|
||||
struct authdes_fullname {
|
||||
char *name; /* network name of client, up to MAXNETNAMELEN */
|
||||
des_block key; /* conversation key */
|
||||
u_long window; /* associated window */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* A credential
|
||||
*/
|
||||
struct authdes_cred {
|
||||
enum authdes_namekind adc_namekind;
|
||||
struct authdes_fullname adc_fullname;
|
||||
u_long adc_nickname;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* A des authentication verifier
|
||||
*/
|
||||
struct authdes_verf {
|
||||
union {
|
||||
struct timeval adv_ctime; /* clear time */
|
||||
des_block adv_xtime; /* crypt time */
|
||||
} adv_time_u;
|
||||
u_long adv_int_u;
|
||||
};
|
||||
|
||||
/*
|
||||
* des authentication verifier: client variety
|
||||
*
|
||||
* adv_timestamp is the current time.
|
||||
* adv_winverf is the credential window + 1.
|
||||
* Both are encrypted using the conversation key.
|
||||
*/
|
||||
#define adv_timestamp adv_time_u.adv_ctime
|
||||
#define adv_xtimestamp adv_time_u.adv_xtime
|
||||
#define adv_winverf adv_int_u
|
||||
|
||||
/*
|
||||
* des authentication verifier: server variety
|
||||
*
|
||||
* adv_timeverf is the client's timestamp + client's window
|
||||
* adv_nickname is the server's nickname for the client.
|
||||
* adv_timeverf is encrypted using the conversation key.
|
||||
*/
|
||||
#define adv_timeverf adv_time_u.adv_ctime
|
||||
#define adv_xtimeverf adv_time_u.adv_xtime
|
||||
#define adv_nickname adv_int_u
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern int authdes_getucred __P(( struct authdes_cred *, uid_t *, gid_t *, int *, gid_t * ));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* ndef _AUTH_DES_ */
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)auth_unix.h 1.8 88/02/08 SMI
|
||||
* from: @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/auth_unix.h,v 1.10 1999/08/27 23:45:03 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* auth_unix.h, Protocol for UNIX style authentication parameters for RPC
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The system is very weak. The client uses no encryption for it
|
||||
* credentials and only sends null verifiers. The server sends backs
|
||||
* null verifiers or optionally a verifier that suggests a new short hand
|
||||
* for the credentials.
|
||||
*/
|
||||
|
||||
#ifndef _RPC_AUTH_UNIX_H
|
||||
#define _RPC_AUTH_UNIX_H
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/* The machine name is part of a credential; it may not exceed 255 bytes */
|
||||
#define MAX_MACHINE_NAME 255
|
||||
|
||||
/* gids compose part of a credential; there may not be more than 16 of them */
|
||||
#define NGRPS 16
|
||||
|
||||
/*
|
||||
* Unix style credentials.
|
||||
*/
|
||||
struct authunix_parms {
|
||||
u_long aup_time;
|
||||
char *aup_machname;
|
||||
int aup_uid;
|
||||
int aup_gid;
|
||||
u_int aup_len;
|
||||
int *aup_gids;
|
||||
};
|
||||
|
||||
#define authsys_parms authunix_parms
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern bool_t xdr_authunix_parms __P((XDR *, struct authunix_parms *));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* If a response verifier has flavor AUTH_SHORT,
|
||||
* then the body of the response verifier encapsulates the following structure;
|
||||
* again it is serialized in the obvious fashion.
|
||||
*/
|
||||
struct short_hand_verf {
|
||||
struct opaque_auth new_cred;
|
||||
};
|
||||
|
||||
#endif /* !_RPC_AUTH_UNIX_H */
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_CLNT_H
|
||||
#define RPC_CLNT_H
|
||||
|
||||
/* @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.31 88/02/08 SMI*/
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,6 +25,10 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)clnt.h 1.31 88/02/08 SMI
|
||||
* from: @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/clnt.h,v 1.11 1999/08/27 23:45:03 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -37,8 +37,10 @@
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _CLNT_
|
||||
#define _CLNT_
|
||||
#ifndef _RPC_CLNT_H_
|
||||
#define _RPC_CLNT_H_
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
/*
|
||||
* Rpc calls return an enum clnt_stat. This should be looked at more,
|
||||
@@ -90,15 +92,15 @@ enum clnt_stat {
|
||||
struct rpc_err {
|
||||
enum clnt_stat re_status;
|
||||
union {
|
||||
int RE_errno; /* realated system error */
|
||||
int RE_errno; /* related system error */
|
||||
enum auth_stat RE_why; /* why the auth error occurred */
|
||||
struct {
|
||||
u_long low; /* lowest verion supported */
|
||||
u_long high; /* highest verion supported */
|
||||
u_int32_t low; /* lowest verion supported */
|
||||
u_int32_t high; /* highest verion supported */
|
||||
} RE_vers;
|
||||
struct { /* maybe meaningful if RPC_FAILED */
|
||||
long s1;
|
||||
long s2;
|
||||
int32_t s1;
|
||||
int32_t s2;
|
||||
} RE_lb; /* life boot & debugging only */
|
||||
} ru;
|
||||
#define re_errno ru.RE_errno
|
||||
@@ -113,15 +115,26 @@ struct rpc_err {
|
||||
* Created by individual implementations, see e.g. rpc_udp.c.
|
||||
* Client is responsible for initializing auth, see e.g. auth_none.c.
|
||||
*/
|
||||
typedef struct {
|
||||
typedef struct __rpc_client {
|
||||
AUTH *cl_auth; /* authenticator */
|
||||
struct clnt_ops {
|
||||
enum clnt_stat (*cl_call)(); /* call remote procedure */
|
||||
void (*cl_abort)(); /* abort a call */
|
||||
void (*cl_geterr)(); /* get specific error code */
|
||||
bool_t (*cl_freeres)(); /* frees results */
|
||||
void (*cl_destroy)();/* destroy this structure */
|
||||
bool_t (*cl_control)();/* the ioctl() of rpc */
|
||||
/* call remote procedure */
|
||||
enum clnt_stat (*cl_call) __P((struct __rpc_client *,
|
||||
u_long, xdrproc_t, caddr_t, xdrproc_t,
|
||||
caddr_t, struct timeval));
|
||||
/* abort a call */
|
||||
void (*cl_abort) __P((struct __rpc_client *));
|
||||
/* get specific error code */
|
||||
void (*cl_geterr) __P((struct __rpc_client *,
|
||||
struct rpc_err *));
|
||||
/* frees results */
|
||||
bool_t (*cl_freeres) __P((struct __rpc_client *,
|
||||
xdrproc_t, caddr_t));
|
||||
/* destroy this structure */
|
||||
void (*cl_destroy) __P((struct __rpc_client *));
|
||||
/* the ioctl() of rpc */
|
||||
bool_t (*cl_control) __P((struct __rpc_client *, u_int,
|
||||
void *));
|
||||
} *cl_ops;
|
||||
caddr_t cl_private; /* private stuff */
|
||||
} CLIENT;
|
||||
@@ -146,9 +159,11 @@ typedef struct {
|
||||
* struct timeval timeout;
|
||||
*/
|
||||
#define CLNT_CALL(rh, proc, xargs, argsp, xres, resp, secs) \
|
||||
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, argsp, xres, resp, secs))
|
||||
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, (caddr_t)argsp, \
|
||||
xres, (caddr_t)resp, secs))
|
||||
#define clnt_call(rh, proc, xargs, argsp, xres, resp, secs) \
|
||||
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, argsp, xres, resp, secs))
|
||||
((*(rh)->cl_ops->cl_call)(rh, proc, xargs, (caddr_t)argsp, \
|
||||
xres, (caddr_t)resp, secs))
|
||||
|
||||
/*
|
||||
* void
|
||||
@@ -188,17 +203,42 @@ typedef struct {
|
||||
#define clnt_control(cl,rq,in) ((*(cl)->cl_ops->cl_control)(cl,rq,in))
|
||||
|
||||
/*
|
||||
* control operations that apply to both udp and tcp transports
|
||||
* control operations that apply to udp, tcp and unix transports
|
||||
*
|
||||
* Note: options marked XXX are no-ops in this implementation of RPC.
|
||||
* The are present in TI-RPC but can't be implemented here since they
|
||||
* depend on the presence of STREAMS/TLI, which we don't have.
|
||||
*
|
||||
*/
|
||||
#define CLSET_TIMEOUT 1 /* set timeout (timeval) */
|
||||
#define CLGET_TIMEOUT 2 /* get timeout (timeval) */
|
||||
#define CLGET_SERVER_ADDR 3 /* get server's address (sockaddr) */
|
||||
#define CLGET_FD 6 /* get connections file descriptor */
|
||||
#define CLGET_SVC_ADDR 7 /* get server's address (netbuf) XXX */
|
||||
#define CLSET_FD_CLOSE 8 /* close fd while clnt_destroy */
|
||||
#define CLSET_FD_NCLOSE 9 /* Do not close fd while clnt_destroy */
|
||||
#define CLGET_XID 10 /* Get xid */
|
||||
#define CLSET_XID 11 /* Set xid */
|
||||
#define CLGET_VERS 12 /* Get version number */
|
||||
#define CLSET_VERS 13 /* Set version number */
|
||||
#define CLGET_PROG 14 /* Get program number */
|
||||
#define CLSET_PROG 15 /* Set program number */
|
||||
#define CLSET_SVC_ADDR 16 /* get server's address (netbuf) XXX */
|
||||
#define CLSET_PUSH_TIMOD 17 /* push timod if not already present XXX */
|
||||
#define CLSET_POP_TIMOD 18 /* pop timod XXX */
|
||||
|
||||
/*
|
||||
* udp only control operations
|
||||
*/
|
||||
#define CLSET_RETRY_TIMEOUT 4 /* set retry timeout (timeval) */
|
||||
#define CLGET_RETRY_TIMEOUT 5 /* get retry timeout (timeval) */
|
||||
|
||||
/*
|
||||
* Operations which GSSAPI needs. (Bletch.)
|
||||
*/
|
||||
#define CLGET_LOCAL_ADDR 19 /* get local addr (sockaddr) */
|
||||
|
||||
|
||||
/*
|
||||
* void
|
||||
* CLNT_DESTROY(rh);
|
||||
@@ -209,7 +249,7 @@ typedef struct {
|
||||
|
||||
|
||||
/*
|
||||
* RPCTEST is a test program which is accessable on every rpc
|
||||
* RPCTEST is a test program which is accessible on every rpc
|
||||
* transport/port. It is used for testing, performance evaluation,
|
||||
* and network administration.
|
||||
*/
|
||||
@@ -238,21 +278,24 @@ typedef struct {
|
||||
* u_long prog;
|
||||
* u_long vers;
|
||||
*/
|
||||
extern CLIENT *clntraw_create();
|
||||
__BEGIN_DECLS
|
||||
extern CLIENT *clntraw_create __P((u_long, u_long));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* Generic client creation routine. Supported protocols are "udp" and "tcp"
|
||||
* Generic client creation routine. Supported protocols are "udp", "tcp"
|
||||
* and "unix".
|
||||
* CLIENT *
|
||||
* clnt_create(host, prog, vers, prot);
|
||||
* char *host; -- hostname
|
||||
* u_long prog; -- program number
|
||||
* u_long vers; -- version number
|
||||
* char *prot; -- protocol
|
||||
*/
|
||||
extern CLIENT *
|
||||
clnt_create(/*host, prog, vers, prot*/); /*
|
||||
char *host; -- hostname
|
||||
u_long prog; -- program number
|
||||
u_long vers; -- version number
|
||||
char *prot; -- protocol
|
||||
*/
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern CLIENT *clnt_create __P((char *, u_long, u_long, char *));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
@@ -266,7 +309,15 @@ clnt_create(/*host, prog, vers, prot*/); /*
|
||||
* u_int sendsz;
|
||||
* u_int recvsz;
|
||||
*/
|
||||
extern CLIENT *clnttcp_create();
|
||||
__BEGIN_DECLS
|
||||
extern CLIENT *clnttcp_create __P((struct sockaddr_in *,
|
||||
u_long,
|
||||
u_long,
|
||||
int *,
|
||||
u_int,
|
||||
u_int));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* UDP based rpc.
|
||||
@@ -289,25 +340,67 @@ extern CLIENT *clnttcp_create();
|
||||
* u_int sendsz;
|
||||
* u_int recvsz;
|
||||
*/
|
||||
extern CLIENT *clntudp_create();
|
||||
extern CLIENT *clntudp_bufcreate();
|
||||
__BEGIN_DECLS
|
||||
extern CLIENT *clntudp_create __P((struct sockaddr_in *,
|
||||
u_long,
|
||||
u_long,
|
||||
struct timeval,
|
||||
int *));
|
||||
extern CLIENT *clntudp_bufcreate __P((struct sockaddr_in *,
|
||||
u_long,
|
||||
u_long,
|
||||
struct timeval,
|
||||
int *,
|
||||
u_int,
|
||||
u_int));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* AF_UNIX based rpc
|
||||
* CLIENT *
|
||||
* clntunix_create(raddr, prog, vers, sockp, sendsz, recvsz)
|
||||
* struct sockaddr_un *raddr;
|
||||
* u_long prog;
|
||||
* u_long version;
|
||||
* register int *sockp;
|
||||
* u_int sendsz;
|
||||
* u_int recvsz;
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern CLIENT *clntunix_create __P((struct sockaddr_un *,
|
||||
u_long,
|
||||
u_long,
|
||||
int *,
|
||||
u_int,
|
||||
u_int));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* Print why creation failed
|
||||
*/
|
||||
void clnt_pcreateerror(/* char *msg */); /* stderr */
|
||||
char *clnt_spcreateerror(/* char *msg */); /* string */
|
||||
__BEGIN_DECLS
|
||||
extern void clnt_pcreateerror __P((char *)); /* stderr */
|
||||
extern char *clnt_spcreateerror __P((char *)); /* string */
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Like clnt_perror(), but is more verbose in its output
|
||||
*/
|
||||
void clnt_perrno(/* enum clnt_stat num */); /* stderr */
|
||||
__BEGIN_DECLS
|
||||
extern void clnt_perrno __P((enum clnt_stat)); /* stderr */
|
||||
extern char *clnt_sperrno __P((enum clnt_stat)); /* string */
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Print an English error message, given the client error code
|
||||
*/
|
||||
void clnt_perror(/* CLIENT *clnt, char *msg */); /* stderr */
|
||||
char *clnt_sperror(/* CLIENT *clnt, char *msg */); /* string */
|
||||
__BEGIN_DECLS
|
||||
extern void clnt_perror __P((CLIENT *, char *)); /* stderr */
|
||||
extern char *clnt_sperror __P((CLIENT *, char *)); /* string */
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* If a creation fails, the following allows the user to figure out why.
|
||||
@@ -320,17 +413,7 @@ struct rpc_createerr {
|
||||
extern struct rpc_createerr rpc_createerr;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Copy error message to buffer.
|
||||
*/
|
||||
char *clnt_sperrno(/* enum clnt_stat num */); /* string */
|
||||
|
||||
|
||||
|
||||
#define UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */
|
||||
#define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */
|
||||
|
||||
#endif /*!_CLNT_*/
|
||||
|
||||
#endif /* RPC_CLNT_H */
|
||||
#endif /* !_RPC_CLNT_H */
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
/* @(#)des.h 2.2 88/08/10 4.0 RPCSRC; from 2.7 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/*
|
||||
* Generic DES driver interface
|
||||
* Keep this file hardware independent!
|
||||
* Copyright (c) 1986 by Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#define DES_MAXLEN 65536 /* maximum # of bytes to encrypt */
|
||||
#define DES_QUICKLEN 16 /* maximum # of bytes to encrypt quickly */
|
||||
|
||||
enum desdir { ENCRYPT, DECRYPT };
|
||||
enum desmode { CBC, ECB };
|
||||
|
||||
/*
|
||||
* parameters to ioctl call
|
||||
*/
|
||||
struct desparams {
|
||||
u_char des_key[8]; /* key (with low bit parity) */
|
||||
enum desdir des_dir; /* direction */
|
||||
enum desmode des_mode; /* mode */
|
||||
u_char des_ivec[8]; /* input vector */
|
||||
unsigned des_len; /* number of bytes to crypt */
|
||||
union {
|
||||
u_char UDES_data[DES_QUICKLEN];
|
||||
u_char *UDES_buf;
|
||||
} UDES;
|
||||
# define des_data UDES.UDES_data /* direct data here if quick */
|
||||
# define des_buf UDES.UDES_buf /* otherwise, pointer to data */
|
||||
};
|
||||
|
||||
#ifdef notdef
|
||||
|
||||
/*
|
||||
* These ioctls are only implemented in SunOS. Maybe someday
|
||||
* if somebody writes a driver for DES hardware that works
|
||||
* with FreeBSD, we can being that back.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Encrypt an arbitrary sized buffer
|
||||
*/
|
||||
#define DESIOCBLOCK _IOWR(d, 6, struct desparams)
|
||||
|
||||
/*
|
||||
* Encrypt of small amount of data, quickly
|
||||
*/
|
||||
#define DESIOCQUICK _IOWR(d, 7, struct desparams)
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Software DES.
|
||||
*/
|
||||
extern int _des_crypt __P(( char *, int, struct desparams * ));
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
* @(#)des_crypt.h 2.1 88/08/11 4.0 RPCSRC; from 1.4 88/02/08 (C) 1986 SMI
|
||||
* $FreeBSD: src/include/rpc/des_crypt.h,v 1.2 1999/12/29 05:00:42 peter Exp $
|
||||
*
|
||||
* des_crypt.h, des library routine interface
|
||||
* Copyright (C) 1986, Sun Microsystems, Inc.
|
||||
*/
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <rpc/rpc.h>
|
||||
|
||||
#define DES_MAXDATA 8192 /* max bytes encrypted in one call */
|
||||
#define DES_DIRMASK (1 << 0)
|
||||
#define DES_ENCRYPT (0*DES_DIRMASK) /* Encrypt */
|
||||
#define DES_DECRYPT (1*DES_DIRMASK) /* Decrypt */
|
||||
|
||||
|
||||
#define DES_DEVMASK (1 << 1)
|
||||
#define DES_HW (0*DES_DEVMASK) /* Use hardware device */
|
||||
#define DES_SW (1*DES_DEVMASK) /* Use software device */
|
||||
|
||||
|
||||
#define DESERR_NONE 0 /* succeeded */
|
||||
#define DESERR_NOHWDEVICE 1 /* succeeded, but hw device not available */
|
||||
#define DESERR_HWERROR 2 /* failed, hardware/driver error */
|
||||
#define DESERR_BADPARAM 3 /* failed, bad parameter to call */
|
||||
|
||||
#define DES_FAILED(err) \
|
||||
((err) > DESERR_NOHWDEVICE)
|
||||
|
||||
/*
|
||||
* cbc_crypt()
|
||||
* ecb_crypt()
|
||||
*
|
||||
* Encrypt (or decrypt) len bytes of a buffer buf.
|
||||
* The length must be a multiple of eight.
|
||||
* The key should have odd parity in the low bit of each byte.
|
||||
* ivec is the input vector, and is updated to the new one (cbc only).
|
||||
* The mode is created by oring together the appropriate parameters.
|
||||
* DESERR_NOHWDEVICE is returned if DES_HW was specified but
|
||||
* there was no hardware to do it on (the data will still be
|
||||
* encrypted though, in software).
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Cipher Block Chaining mode
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
#ifdef __STDC__
|
||||
int cbc_crypt __P(( char *, char *, unsigned int, unsigned int, char *));
|
||||
#else
|
||||
cbc_crypt(/* key, buf, len, mode, ivec */); /*
|
||||
char *key;
|
||||
char *buf;
|
||||
unsigned len;
|
||||
unsigned mode;
|
||||
char *ivec;
|
||||
*/
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Electronic Code Book mode
|
||||
*/
|
||||
#ifdef __STDC__
|
||||
int ecb_crypt __P(( char *, char *, unsigned int, unsigned int ));
|
||||
#else
|
||||
ecb_crypt(/* key, buf, len, mode */); /*
|
||||
char *key;
|
||||
char *buf;
|
||||
unsigned len;
|
||||
unsigned mode;
|
||||
*/
|
||||
#endif
|
||||
__END_DECLS
|
||||
|
||||
#ifndef _KERNEL
|
||||
/*
|
||||
* Set des parity for a key.
|
||||
* DES parity is odd and in the low bit of each byte
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
#ifdef __STDC__
|
||||
void des_setparity __P(( char *));
|
||||
#else
|
||||
void
|
||||
des_setparity(/* key */); /*
|
||||
char *key;
|
||||
*/
|
||||
#endif
|
||||
__END_DECLS
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)pmap_clnt.h 1.11 88/02/08 SMI
|
||||
* from: @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/pmap_clnt.h,v 1.11 1999/08/27 23:45:04 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* pmap_clnt.h
|
||||
* Supplies C routines to get to portmap services.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Usage:
|
||||
* success = pmap_set(program, version, protocol, port);
|
||||
* success = pmap_unset(program, version);
|
||||
* port = pmap_getport(address, program, version, protocol);
|
||||
* head = pmap_getmaps(address);
|
||||
* clnt_stat = pmap_rmtcall(address, program, version, procedure,
|
||||
* xdrargs, argsp, xdrres, resp, tout, port_ptr)
|
||||
* (works for udp only.)
|
||||
* clnt_stat = clnt_broadcast(program, version, procedure,
|
||||
* xdrargs, argsp, xdrres, resp, eachresult)
|
||||
* (like pmap_rmtcall, except the call is broadcasted to all
|
||||
* locally connected nets. For each valid response received,
|
||||
* the procedure eachresult is called. Its form is:
|
||||
* done = eachresult(resp, raddr)
|
||||
* bool_t done;
|
||||
* caddr_t resp;
|
||||
* struct sockaddr_in raddr;
|
||||
* where resp points to the results of the call and raddr is the
|
||||
* address if the responder to the broadcast.
|
||||
*/
|
||||
|
||||
#ifndef _RPC_PMAPCLNT_H
|
||||
#define _RPC_PMAPCLNT_H
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern bool_t pmap_set __P((u_long, u_long, int, int));
|
||||
extern bool_t pmap_unset __P((u_long, u_long));
|
||||
extern struct pmaplist *pmap_getmaps __P((struct sockaddr_in *));
|
||||
extern enum clnt_stat pmap_rmtcall __P((struct sockaddr_in *,
|
||||
u_long, u_long, u_long,
|
||||
xdrproc_t, caddr_t,
|
||||
xdrproc_t, caddr_t,
|
||||
struct timeval, u_long *));
|
||||
extern enum clnt_stat clnt_broadcast __P((u_long, u_long, u_long,
|
||||
xdrproc_t, char *,
|
||||
xdrproc_t, char *,
|
||||
bool_t (*) __P((caddr_t,
|
||||
struct sockaddr_in *))));
|
||||
extern u_short pmap_getport __P((struct sockaddr_in *,
|
||||
u_long, u_long, u_int));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_RPC_PMAPCLNT_H */
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)pmap_prot.h 1.14 88/02/08 SMI
|
||||
* from: @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/pmap_prot.h,v 1.10 1999/08/27 23:45:04 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* pmap_prot.h
|
||||
* Protocol for the local binder service, or pmap.
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*
|
||||
* The following procedures are supported by the protocol:
|
||||
*
|
||||
* PMAPPROC_NULL() returns ()
|
||||
* takes nothing, returns nothing
|
||||
*
|
||||
* PMAPPROC_SET(struct pmap) returns (bool_t)
|
||||
* TRUE is success, FALSE is failure. Registers the tuple
|
||||
* [prog, vers, prot, port].
|
||||
*
|
||||
* PMAPPROC_UNSET(struct pmap) returns (bool_t)
|
||||
* TRUE is success, FALSE is failure. Un-registers pair
|
||||
* [prog, vers]. prot and port are ignored.
|
||||
*
|
||||
* PMAPPROC_GETPORT(struct pmap) returns (long unsigned).
|
||||
* 0 is failure. Otherwise returns the port number where the pair
|
||||
* [prog, vers] is registered. It may lie!
|
||||
*
|
||||
* PMAPPROC_DUMP() RETURNS (struct pmaplist *)
|
||||
*
|
||||
* PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>)
|
||||
* RETURNS (port, string<>);
|
||||
* usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc, encapsulatedargs);
|
||||
* Calls the procedure on the local machine. If it is not registered,
|
||||
* this procedure is quite; ie it does not return error information!!!
|
||||
* This procedure only is supported on rpc/udp and calls via
|
||||
* rpc/udp. This routine only passes null authentication parameters.
|
||||
* This file has no interface to xdr routines for PMAPPROC_CALLIT.
|
||||
*
|
||||
* The service supports remote procedure calls on udp/ip or tcp/ip socket 111.
|
||||
*/
|
||||
|
||||
#ifndef _RPC_PMAPPROT_H
|
||||
#define _RPC_PMAPPROT_H
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#define PMAPPORT ((u_short)111)
|
||||
#define PMAPPROG ((u_long)100000)
|
||||
#define PMAPVERS ((u_long)2)
|
||||
#define PMAPVERS_PROTO ((u_long)2)
|
||||
#define PMAPVERS_ORIG ((u_long)1)
|
||||
#define PMAPPROC_NULL ((u_long)0)
|
||||
#define PMAPPROC_SET ((u_long)1)
|
||||
#define PMAPPROC_UNSET ((u_long)2)
|
||||
#define PMAPPROC_GETPORT ((u_long)3)
|
||||
#define PMAPPROC_DUMP ((u_long)4)
|
||||
#define PMAPPROC_CALLIT ((u_long)5)
|
||||
|
||||
struct pmap {
|
||||
long unsigned pm_prog;
|
||||
long unsigned pm_vers;
|
||||
long unsigned pm_prot;
|
||||
long unsigned pm_port;
|
||||
};
|
||||
|
||||
struct pmaplist {
|
||||
struct pmap pml_map;
|
||||
struct pmaplist *pml_next;
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern bool_t xdr_pmap __P((XDR *, struct pmap *));
|
||||
extern bool_t xdr_pmaplist __P((XDR *, struct pmaplist **));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_RPC_PMAPPROT_H */
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)pmap_rmt.h 1.2 88/02/08 SMI
|
||||
* from: @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/pmap_rmt.h,v 1.10 1999/08/27 23:45:05 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Structures and XDR routines for parameters to and replies from
|
||||
* the portmapper remote-call-service.
|
||||
*
|
||||
* Copyright (C) 1986, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _RPC_PMAPRMT_H
|
||||
#define _RPC_PMAPRMT_H
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
struct rmtcallargs {
|
||||
u_long prog, vers, proc, arglen;
|
||||
caddr_t args_ptr;
|
||||
xdrproc_t xdr_args;
|
||||
};
|
||||
|
||||
struct rmtcallres {
|
||||
u_long *port_ptr;
|
||||
u_long resultslen;
|
||||
caddr_t results_ptr;
|
||||
xdrproc_t xdr_results;
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern bool_t xdr_rmtcall_args __P((XDR *, struct rmtcallargs *));
|
||||
extern bool_t xdr_rmtcallres __P((XDR *, struct rmtcallres *));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_RPC_PMAPRMT_H */
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_H
|
||||
#define RPC_H
|
||||
|
||||
/* @(#)rpc.h 2.4 89/07/11 4.0 RPCSRC; from 1.9 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,6 +25,10 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)rpc.h 1.9 88/02/08 SMI
|
||||
* from: @(#)rpc.h 2.4 89/07/11 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/rpc.h,v 1.12 2000/01/26 09:02:40 shin Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -37,12 +37,11 @@
|
||||
*
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
#ifndef __RPC_HEADER__
|
||||
#define __RPC_HEADER__
|
||||
#ifndef _RPC_RPC_H
|
||||
#define _RPC_RPC_H
|
||||
|
||||
#include <rpc/types.h> /* some typedefs */
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
/* external data representation interfaces */
|
||||
#include <rpc/xdr.h> /* generic (de)serializer */
|
||||
@@ -55,12 +54,12 @@
|
||||
|
||||
/* semi-private protocol headers */
|
||||
#include <rpc/rpc_msg.h> /* protocol for rpc messages */
|
||||
/*#include "auth_unix.h" * protocol for unix style cred */
|
||||
#include <rpc/auth_unix.h> /* protocol for unix style cred */
|
||||
/*
|
||||
* Uncomment-out the next line if you are building the rpc library with
|
||||
* DES Authentication (see the README file in the secure_rpc/ directory).
|
||||
*/
|
||||
/*#include "auth_des.h" * protocol for des style cred */
|
||||
#include <rpc/auth_des.h> /* protocol for des style cred */
|
||||
|
||||
/* Server side only remote procedure callee */
|
||||
#include <rpc/svc.h> /* service manager and multiplexer */
|
||||
@@ -79,8 +78,60 @@ struct rpcent {
|
||||
int r_number; /* rpc program number */
|
||||
};
|
||||
|
||||
struct rpcent *getrpcbyname(), *getrpcbynumber(), *getrpcent();
|
||||
__BEGIN_DECLS
|
||||
extern struct rpcent *getrpcbyname __P((char *));
|
||||
extern struct rpcent *getrpcbynumber __P((int));
|
||||
extern struct rpcent *getrpcent __P((void));
|
||||
extern int getrpcport __P((char *host, int prognum, int versnum, int proto));
|
||||
extern void setrpcent __P((int));
|
||||
extern void endrpcent __P((void));
|
||||
|
||||
#endif /* ndef __RPC_HEADER__ */
|
||||
extern int bindresvport __P((int, struct sockaddr_in *));
|
||||
extern int bindresvport_sa __P((int, struct sockaddr *));
|
||||
extern int get_myaddress __P((struct sockaddr_in *));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* RPC_H */
|
||||
int rtems_rpc_task_init (void);
|
||||
int rtems_rpc_start_portmapper (int priority);
|
||||
|
||||
#ifdef _RTEMS_RPC_INTERNAL_
|
||||
/*
|
||||
* Multi-threaded support
|
||||
* Group all global and static variables into a single spot.
|
||||
* This area will be allocated on a per-task basis
|
||||
*/
|
||||
struct rtems_rpc_task_variables {
|
||||
int svc_svc_maxfd;
|
||||
fd_set svc_svc_fdset;
|
||||
void *svc_xports;
|
||||
int svc_xportssize;
|
||||
int svc__svc_fdsetsize;
|
||||
void *svc__svc_fdset;
|
||||
void *svc_svc_head;
|
||||
|
||||
void *clnt_perror_buf;
|
||||
|
||||
void *clnt_raw_private;
|
||||
|
||||
void *call_rpc_private;
|
||||
|
||||
void *svc_raw_private;
|
||||
|
||||
void *svc_simple_proglst;
|
||||
void *svc_simple_pl;
|
||||
void *svc_simple_transp;
|
||||
|
||||
void *rpcdname_default_domain;
|
||||
|
||||
void *svc_auths_Auths;
|
||||
};
|
||||
extern void *rtems_rpc_task_variables;
|
||||
|
||||
#define svc_maxfd (((struct rtems_rpc_task_variables *)rtems_rpc_task_variables)->svc_svc_maxfd)
|
||||
#define svc_fdset (((struct rtems_rpc_task_variables *)rtems_rpc_task_variables)->svc_svc_fdset)
|
||||
#define __svc_fdsetsize (((struct rtems_rpc_task_variables *)rtems_rpc_task_variables)->svc__svc_fdsetsize)
|
||||
#define __svc_fdset (fd_set *)(((struct rtems_rpc_task_variables *)rtems_rpc_task_variables)->svc__svc_fdset)
|
||||
|
||||
#endif /* _RTEMS_RPC_INTERNAL_ */
|
||||
|
||||
#endif /* !_RPC_RPC_H */
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 1986 - 1991 by Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* rpc_com.h, Common definitions for both the server and client side.
|
||||
* All for the topmost layer of rpc
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _RPC_RPCCOM_H
|
||||
#define _RPC_RPCCOM_H
|
||||
|
||||
/* From: #pragma ident "@(#)rpc_com.h 1.11 93/07/05 SMI" */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* File descriptor to be used on xxx_create calls to get default descriptor
|
||||
*/
|
||||
#define RPC_ANYSOCK -1
|
||||
#define RPC_ANYFD RPC_ANYSOCK
|
||||
/*
|
||||
* The max size of the transport, if the size cannot be determined
|
||||
* by other means.
|
||||
*/
|
||||
#define RPC_MAXDATASIZE 9000
|
||||
#define RPC_MAXADDRSIZE 1024
|
||||
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
extern u_int __rpc_get_t_size (int, long);
|
||||
extern u_int __rpc_get_a_size (long);
|
||||
extern int __rpc_dtbsize (void);
|
||||
extern int _rpc_dtablesize (void);
|
||||
extern int _rpc_get_default_domain(char **);
|
||||
#else
|
||||
extern u_int __rpc_get_t_size ();
|
||||
extern u_int __rpc_get_a_size ();
|
||||
extern int __rpc_dtbsize ();
|
||||
extern int _rpc_dtablesize ();
|
||||
extern int _rpc_get_default_domain();
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _RPC_RPCCOM_H */
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_MSG_H
|
||||
#define RPC_MSG_H
|
||||
|
||||
/* @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,8 +25,11 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)rpc_msg.h 1.7 86/07/16 SMI
|
||||
* from: @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/rpc_msg.h,v 1.12 1999/08/27 23:45:05 peter Exp $
|
||||
*/
|
||||
/* @(#)rpc_msg.h 1.7 86/07/16 SMI */
|
||||
|
||||
/*
|
||||
* rpc_msg.h
|
||||
@@ -39,6 +38,9 @@
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _RPC_RPCMSG_H
|
||||
#define _RPC_RPCMSG_H
|
||||
|
||||
#define RPC_MSG_VERSION ((u_long) 2)
|
||||
#define RPC_SERVICE_PORT ((u_short) 2048)
|
||||
|
||||
@@ -86,8 +88,8 @@ struct accepted_reply {
|
||||
enum accept_stat ar_stat;
|
||||
union {
|
||||
struct {
|
||||
u_long low;
|
||||
u_long high;
|
||||
u_int32_t low;
|
||||
u_int32_t high;
|
||||
} AR_versions;
|
||||
struct {
|
||||
caddr_t where;
|
||||
@@ -106,8 +108,8 @@ struct rejected_reply {
|
||||
enum reject_stat rj_stat;
|
||||
union {
|
||||
struct {
|
||||
u_long low;
|
||||
u_long high;
|
||||
u_int32_t low;
|
||||
u_int32_t high;
|
||||
} RJ_versions;
|
||||
enum auth_stat RJ_why; /* why authentication did not work */
|
||||
} ru;
|
||||
@@ -132,10 +134,10 @@ struct reply_body {
|
||||
* Body of an rpc request call.
|
||||
*/
|
||||
struct call_body {
|
||||
u_long cb_rpcvers; /* must be equal to two */
|
||||
u_long cb_prog;
|
||||
u_long cb_vers;
|
||||
u_long cb_proc;
|
||||
u_int32_t cb_rpcvers; /* must be equal to two */
|
||||
u_int32_t cb_prog;
|
||||
u_int32_t cb_vers;
|
||||
u_int32_t cb_proc;
|
||||
struct opaque_auth cb_cred;
|
||||
struct opaque_auth cb_verf; /* protocol specific - provided by client */
|
||||
};
|
||||
@@ -144,7 +146,7 @@ struct call_body {
|
||||
* The rpc message
|
||||
*/
|
||||
struct rpc_msg {
|
||||
u_long rm_xid;
|
||||
u_int32_t rm_xid;
|
||||
enum msg_type rm_direction;
|
||||
union {
|
||||
struct call_body RM_cmb;
|
||||
@@ -156,14 +158,14 @@ struct rpc_msg {
|
||||
#define acpted_rply ru.RM_rmb.ru.RP_ar
|
||||
#define rjcted_rply ru.RM_rmb.ru.RP_dr
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
/*
|
||||
* XDR routine to handle a rpc message.
|
||||
* xdr_callmsg(xdrs, cmsg)
|
||||
* XDR *xdrs;
|
||||
* struct rpc_msg *cmsg;
|
||||
*/
|
||||
extern bool_t xdr_callmsg();
|
||||
extern bool_t xdr_callmsg __P((XDR *, struct rpc_msg *));
|
||||
|
||||
/*
|
||||
* XDR routine to pre-serialize the static part of a rpc message.
|
||||
@@ -171,7 +173,7 @@ extern bool_t xdr_callmsg();
|
||||
* XDR *xdrs;
|
||||
* struct rpc_msg *cmsg;
|
||||
*/
|
||||
extern bool_t xdr_callhdr();
|
||||
extern bool_t xdr_callhdr __P((XDR *, struct rpc_msg *));
|
||||
|
||||
/*
|
||||
* XDR routine to handle a rpc reply.
|
||||
@@ -179,7 +181,7 @@ extern bool_t xdr_callhdr();
|
||||
* XDR *xdrs;
|
||||
* struct rpc_msg *rmsg;
|
||||
*/
|
||||
extern bool_t xdr_replymsg();
|
||||
extern bool_t xdr_replymsg __P((XDR *, struct rpc_msg *));
|
||||
|
||||
/*
|
||||
* Fills in the error part of a reply message.
|
||||
@@ -187,6 +189,8 @@ extern bool_t xdr_replymsg();
|
||||
* struct rpc_msg *msg;
|
||||
* struct rpc_err *error;
|
||||
*/
|
||||
extern void _seterr_reply();
|
||||
struct rpc_err;
|
||||
extern void _seterr_reply __P((struct rpc_msg *, struct rpc_err *));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* RPC_MSG_H */
|
||||
#endif /* !_RPC_RPCMSG_H */
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
|
||||
#ifndef RPC_SVC_H
|
||||
#define RPC_SVC_H
|
||||
|
||||
/* @(#)svc.h 2.2 88/07/29 4.0 RPCSRC; from 1.20 88/02/08 SMI */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -12,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -30,6 +25,10 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)svc.h 1.20 88/02/08 SMI
|
||||
* from: @(#)svc.h 2.2 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/svc.h,v 1.16 1999/12/29 05:00:43 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -38,8 +37,9 @@
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __SVC_HEADER__
|
||||
#define __SVC_HEADER__
|
||||
#ifndef _RPC_SVC_H
|
||||
#define _RPC_SVC_H
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/*
|
||||
* This interface must manage two items concerning remote procedure calling:
|
||||
@@ -69,19 +69,31 @@ enum xprt_stat {
|
||||
XPRT_IDLE
|
||||
};
|
||||
|
||||
struct rpc_msg;
|
||||
|
||||
/*
|
||||
* Server side transport handle
|
||||
*/
|
||||
typedef struct {
|
||||
typedef struct __rpc_svcxprt {
|
||||
int xp_sock;
|
||||
u_short xp_port; /* associated port number */
|
||||
struct xp_ops {
|
||||
bool_t (*xp_recv)(); /* receive incomming requests */
|
||||
enum xprt_stat (*xp_stat)(); /* get transport status */
|
||||
bool_t (*xp_getargs)(); /* get arguments */
|
||||
bool_t (*xp_reply)(); /* send reply */
|
||||
bool_t (*xp_freeargs)();/* free mem allocated for args */
|
||||
void (*xp_destroy)(); /* destroy this struct */
|
||||
/* receive incoming requests */
|
||||
bool_t (*xp_recv) __P((struct __rpc_svcxprt *,
|
||||
struct rpc_msg *));
|
||||
/* get transport status */
|
||||
enum xprt_stat (*xp_stat) __P((struct __rpc_svcxprt *));
|
||||
/* get arguments */
|
||||
bool_t (*xp_getargs) __P((struct __rpc_svcxprt *, xdrproc_t,
|
||||
caddr_t));
|
||||
/* send reply */
|
||||
bool_t (*xp_reply) __P((struct __rpc_svcxprt *,
|
||||
struct rpc_msg *));
|
||||
/* free mem allocated for args */
|
||||
bool_t (*xp_freeargs) __P((struct __rpc_svcxprt *, xdrproc_t,
|
||||
caddr_t));
|
||||
/* destroy this struct */
|
||||
void (*xp_destroy) __P((struct __rpc_svcxprt *));
|
||||
} *xp_ops;
|
||||
int xp_addrlen; /* length of remote address */
|
||||
struct sockaddr_in xp_raddr; /* remote address */
|
||||
@@ -138,9 +150,9 @@ typedef struct {
|
||||
* Service request
|
||||
*/
|
||||
struct svc_req {
|
||||
u_long rq_prog; /* service program number */
|
||||
u_long rq_vers; /* service protocol version */
|
||||
u_long rq_proc; /* the desired procedure */
|
||||
u_int32_t rq_prog; /* service program number */
|
||||
u_int32_t rq_vers; /* service protocol version */
|
||||
u_int32_t rq_proc; /* the desired procedure */
|
||||
struct opaque_auth rq_cred; /* raw creds from the wire */
|
||||
caddr_t rq_clntcred; /* read only cooked cred */
|
||||
SVCXPRT *rq_xprt; /* associated transport */
|
||||
@@ -157,7 +169,10 @@ struct svc_req {
|
||||
* void (*dispatch)();
|
||||
* int protocol; (like TCP or UDP, zero means do not register)
|
||||
*/
|
||||
extern bool_t svc_register();
|
||||
__BEGIN_DECLS
|
||||
extern bool_t svc_register __P((SVCXPRT *, u_long, u_long,
|
||||
void (*) __P((struct svc_req *, SVCXPRT *)), int));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Service un-registration
|
||||
@@ -166,7 +181,9 @@ extern bool_t svc_register();
|
||||
* u_long prog;
|
||||
* u_long vers;
|
||||
*/
|
||||
extern void svc_unregister();
|
||||
__BEGIN_DECLS
|
||||
extern void svc_unregister __P((u_long, u_long));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Transport registration.
|
||||
@@ -174,7 +191,9 @@ extern void svc_unregister();
|
||||
* xprt_register(xprt)
|
||||
* SVCXPRT *xprt;
|
||||
*/
|
||||
extern void xprt_register();
|
||||
__BEGIN_DECLS
|
||||
extern void xprt_register __P((SVCXPRT *));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Transport un-register
|
||||
@@ -182,7 +201,9 @@ extern void xprt_register();
|
||||
* xprt_unregister(xprt)
|
||||
* SVCXPRT *xprt;
|
||||
*/
|
||||
extern void xprt_unregister();
|
||||
__BEGIN_DECLS
|
||||
extern void xprt_unregister __P((SVCXPRT *));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
|
||||
@@ -213,14 +234,16 @@ extern void xprt_unregister();
|
||||
* deadlock the caller and server processes!
|
||||
*/
|
||||
|
||||
extern bool_t svc_sendreply();
|
||||
extern void svcerr_decode();
|
||||
extern void svcerr_weakauth();
|
||||
extern void svcerr_noproc();
|
||||
extern void svcerr_progvers();
|
||||
extern void svcerr_auth();
|
||||
extern void svcerr_noprog();
|
||||
extern void svcerr_systemerr();
|
||||
__BEGIN_DECLS
|
||||
extern bool_t svc_sendreply __P((SVCXPRT *, xdrproc_t, char *));
|
||||
extern void svcerr_decode __P((SVCXPRT *));
|
||||
extern void svcerr_weakauth __P((SVCXPRT *));
|
||||
extern void svcerr_noproc __P((SVCXPRT *));
|
||||
extern void svcerr_progvers __P((SVCXPRT *, u_long, u_long));
|
||||
extern void svcerr_auth __P((SVCXPRT *, enum auth_stat));
|
||||
extern void svcerr_noprog __P((SVCXPRT *));
|
||||
extern void svcerr_systemerr __P((SVCXPRT *));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Lowest level dispatching -OR- who owns this process anyway.
|
||||
@@ -237,22 +260,24 @@ extern void svcerr_systemerr();
|
||||
* Global keeper of rpc service descriptors in use
|
||||
* dynamic; must be inspected before each call to select
|
||||
*/
|
||||
#ifdef FD_SETSIZE
|
||||
extern int svc_maxfd;
|
||||
extern fd_set svc_fdset;
|
||||
#define svc_fds svc_fdset.fds_bits[0] /* compatibility */
|
||||
#else
|
||||
extern int svc_fds;
|
||||
#endif /* def FD_SETSIZE */
|
||||
|
||||
#ifndef _KERNEL
|
||||
/*
|
||||
* a small program implemented by the svc_rpc implementation itself;
|
||||
* also see clnt.h for protocol numbers.
|
||||
*/
|
||||
extern void rpctest_service();
|
||||
#endif
|
||||
|
||||
extern void svc_getreq();
|
||||
extern void svc_getreqset(); /* takes fdset instead of int */
|
||||
extern void svc_run(); /* never returns */
|
||||
__BEGIN_DECLS
|
||||
extern void svc_getreq __P((int));
|
||||
extern void svc_getreqset __P((fd_set *));
|
||||
extern void svc_getreqset2 __P((fd_set *, int)); /* XXX: nonstd, undoc */
|
||||
extern void svc_run __P((void));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Socket to use on svcxxx_create call to get default socket
|
||||
@@ -266,26 +291,34 @@ extern void svc_run(); /* never returns */
|
||||
/*
|
||||
* Memory based rpc for testing and timing.
|
||||
*/
|
||||
extern SVCXPRT *svcraw_create();
|
||||
__BEGIN_DECLS
|
||||
extern SVCXPRT *svcraw_create __P((void));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* Udp based rpc.
|
||||
*/
|
||||
extern SVCXPRT *svcudp_create();
|
||||
extern SVCXPRT *svcudp_bufcreate();
|
||||
extern int svcudp_enablecache(SVCXPRT *transp, u_long size);
|
||||
__BEGIN_DECLS
|
||||
extern SVCXPRT *svcudp_create __P((int));
|
||||
extern SVCXPRT *svcudp_bufcreate __P((int, u_int, u_int));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/*
|
||||
* Tcp based rpc.
|
||||
*/
|
||||
extern SVCXPRT *svctcp_create();
|
||||
__BEGIN_DECLS
|
||||
extern SVCXPRT *svctcp_create __P((int, u_int, u_int));
|
||||
extern SVCXPRT *svcfd_create __P((int, u_int, u_int));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* AF_UNIX socket based rpc.
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern SVCXPRT *svcunix_create __P((int, u_int, u_int, char *));
|
||||
extern SVCXPRT *svcunixfd_create __P((int, u_int, u_int));
|
||||
__END_DECLS
|
||||
|
||||
|
||||
#endif /* !__SVC_HEADER__ */
|
||||
|
||||
extern int _rpcsvccount;
|
||||
extern int _rpcsvcstate;
|
||||
extern int _SERVED;
|
||||
|
||||
#endif /* RPC_SVC_H */
|
||||
#endif /* !_RPC_SVC_H */
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_SVC_AUTH_H
|
||||
#define RPC_SVC_AUTH_H
|
||||
|
||||
/* @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,8 +25,11 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)svc_auth.h 1.6 86/07/16 SMI
|
||||
* from: @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/svc_auth.h,v 1.12 1999/08/27 23:45:05 peter Exp $
|
||||
*/
|
||||
/* @(#)svc_auth.h 1.6 86/07/16 SMI */
|
||||
|
||||
/*
|
||||
* svc_auth.h, Service side of rpc authentication.
|
||||
@@ -38,10 +37,20 @@
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef _RPC_SVCAUTH_H
|
||||
#define _RPC_SVCAUTH_H
|
||||
|
||||
struct rpc_msg;
|
||||
struct svc_req;
|
||||
|
||||
/*
|
||||
* Server side authenticator
|
||||
*/
|
||||
extern enum auth_stat _authenticate();
|
||||
__BEGIN_DECLS
|
||||
extern enum auth_stat _authenticate __P((struct svc_req *, struct rpc_msg *));
|
||||
extern int svc_auth_reg __P((int, enum auth_stat (*)(struct svc_req *,
|
||||
struct rpc_msg *)));
|
||||
extern enum auth_stat _svcauth_des __P((struct svc_req *, struct rpc_msg *));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* SVC_AUTH_H */
|
||||
#endif /* !_RPC_SVCAUTH_H */
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_TYPES_H
|
||||
#define RPC_TYPES_H
|
||||
|
||||
/* @(#)types.h 2.3 88/08/15 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,32 +25,32 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)types.h 1.18 87/07/24 SMI
|
||||
* from: @(#)types.h 2.3 88/08/15 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/types.h,v 1.9 1999/08/27 23:45:06 peter Exp $
|
||||
*/
|
||||
/* @(#)types.h 1.18 87/07/24 SMI */
|
||||
|
||||
/*
|
||||
* Rpc additions to <sys/types.h>
|
||||
*/
|
||||
#ifndef __TYPES_RPC_HEADER__
|
||||
#define __TYPES_RPC_HEADER__
|
||||
#ifndef _RPC_TYPES_H
|
||||
#define _RPC_TYPES_H
|
||||
|
||||
/*#include <network/types.h>*/
|
||||
typedef unsigned long u_int32; /* 32-bit unsigned integers */
|
||||
#define bool_t int32_t
|
||||
#define enum_t int32_t
|
||||
#define __dontcare__ -1
|
||||
|
||||
#define bool_t int
|
||||
#define enum_t int
|
||||
#ifndef FALSE
|
||||
# define FALSE (0)
|
||||
#endif
|
||||
#ifndef TRUE
|
||||
# define TRUE (1)
|
||||
#endif
|
||||
#define __dontcare__ -1
|
||||
#ifndef NULL
|
||||
# define NULL 0
|
||||
#endif
|
||||
|
||||
void *malloc();
|
||||
#define mem_alloc(bsize) malloc(bsize)
|
||||
#define mem_free(ptr, bsize) free(ptr)
|
||||
|
||||
@@ -63,13 +59,4 @@ void *malloc();
|
||||
#endif
|
||||
#include <sys/time.h>
|
||||
|
||||
#ifndef INADDR_LOOPBACK
|
||||
#define INADDR_LOOPBACK (u_long)0x7F000001
|
||||
#endif
|
||||
#ifndef MAXHOSTNAMELEN
|
||||
#define MAXHOSTNAMELEN 64
|
||||
#endif
|
||||
|
||||
#endif /* ndef __TYPES_RPC_HEADER__ */
|
||||
|
||||
#endif /* RPC_TYPES_H */
|
||||
#endif /* !_RPC_TYPES_H */
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
#ifndef RPC_XDR_H
|
||||
#define RPC_XDR_H
|
||||
|
||||
/* @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC */
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
@@ -11,7 +7,7 @@
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
@@ -29,8 +25,11 @@
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* from: @(#)xdr.h 1.19 87/04/22 SMI
|
||||
* from: @(#)xdr.h 2.2 88/07/29 4.0 RPCSRC
|
||||
* $FreeBSD: src/include/rpc/xdr.h,v 1.14 1999/12/29 05:00:44 peter Exp $
|
||||
*/
|
||||
/* @(#)xdr.h 1.19 87/04/22 SMI */
|
||||
|
||||
/*
|
||||
* xdr.h, External Data Representation Serialization Routines.
|
||||
@@ -38,8 +37,9 @@
|
||||
* Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __XDR_HEADER__
|
||||
#define __XDR_HEADER__
|
||||
#ifndef _RPC_XDR_H
|
||||
#define _RPC_XDR_H
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
/*
|
||||
* XDR provides a conventional way for converting between C data
|
||||
@@ -89,34 +89,31 @@ enum xdr_op {
|
||||
#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \
|
||||
* BYTES_PER_XDR_UNIT)
|
||||
|
||||
/*
|
||||
* A xdrproc_t exists for each data type which is to be encoded or decoded.
|
||||
*
|
||||
* The second argument to the xdrproc_t is a pointer to an opaque pointer.
|
||||
* The opaque pointer generally points to a structure of the data type
|
||||
* to be decoded. If this pointer is 0, then the type routines should
|
||||
* allocate dynamic storage of the appropriate size and return it.
|
||||
* bool_t (*xdrproc_t)(XDR *, caddr_t *);
|
||||
*/
|
||||
typedef bool_t (*xdrproc_t)();
|
||||
|
||||
/*
|
||||
* The XDR handle.
|
||||
* Contains operation which is being applied to the stream,
|
||||
* an operations vector for the paticular implementation (e.g. see xdr_mem.c),
|
||||
* and two private fields for the use of the particular impelementation.
|
||||
* an operations vector for the particular implementation (e.g. see xdr_mem.c),
|
||||
* and two private fields for the use of the particular implementation.
|
||||
*/
|
||||
typedef struct {
|
||||
typedef struct __rpc_xdr {
|
||||
enum xdr_op x_op; /* operation; fast additional param */
|
||||
struct xdr_ops {
|
||||
bool_t (*x_getlong)(); /* get a long from underlying stream */
|
||||
bool_t (*x_putlong)(); /* put a long to " */
|
||||
bool_t (*x_getbytes)();/* get some bytes from " */
|
||||
bool_t (*x_putbytes)();/* put some bytes to " */
|
||||
u_int (*x_getpostn)();/* returns bytes off from beginning */
|
||||
bool_t (*x_setpostn)();/* lets you reposition the stream */
|
||||
long * (*x_inline)(); /* buf quick ptr to buffered data */
|
||||
void (*x_destroy)(); /* free privates of this xdr_stream */
|
||||
/* get a long from underlying stream */
|
||||
bool_t (*x_getlong) __P((struct __rpc_xdr *, long *));
|
||||
/* put a long to underlying stream */
|
||||
bool_t (*x_putlong) __P((struct __rpc_xdr *, long *));
|
||||
/* get some bytes from underlying stream */
|
||||
bool_t (*x_getbytes) __P((struct __rpc_xdr *, caddr_t, u_int));
|
||||
/* put some bytes to underlying stream */
|
||||
bool_t (*x_putbytes) __P((struct __rpc_xdr *, caddr_t, u_int));
|
||||
/* returns bytes off from beginning */
|
||||
u_int (*x_getpostn) __P((struct __rpc_xdr *));
|
||||
/* lets you reposition the stream */
|
||||
bool_t (*x_setpostn) __P((struct __rpc_xdr *, u_int));
|
||||
/* buf quick ptr to buffered data */
|
||||
int32_t *(*x_inline) __P((struct __rpc_xdr *, u_int));
|
||||
/* free privates of this xdr_stream */
|
||||
void (*x_destroy) __P((struct __rpc_xdr *));
|
||||
} *x_ops;
|
||||
caddr_t x_public; /* users' data */
|
||||
caddr_t x_private; /* pointer to private data */
|
||||
@@ -124,6 +121,23 @@ typedef struct {
|
||||
int x_handy; /* extra private word */
|
||||
} XDR;
|
||||
|
||||
/*
|
||||
* A xdrproc_t exists for each data type which is to be encoded or decoded.
|
||||
*
|
||||
* The second argument to the xdrproc_t is a pointer to an opaque pointer.
|
||||
* The opaque pointer generally points to a structure of the data type
|
||||
* to be decoded. If this pointer is 0, then the type routines should
|
||||
* allocate dynamic storage of the appropriate size and return it.
|
||||
*/
|
||||
#ifdef _KERNEL
|
||||
typedef bool_t (*xdrproc_t) __P((XDR *, void *, u_int));
|
||||
#else
|
||||
/*
|
||||
* XXX can't actually prototype it, because some take two args!!!
|
||||
*/
|
||||
typedef bool_t (*xdrproc_t) __P((/* XDR *, void *, u_int */));
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Operations defined on a XDR handle
|
||||
*
|
||||
@@ -192,7 +206,7 @@ struct xdr_discrim {
|
||||
};
|
||||
|
||||
/*
|
||||
* In-line routines for fast encode/decode of primitve data types.
|
||||
* In-line routines for fast encode/decode of primitive data types.
|
||||
* Caveat emptor: these use single memory cycles to get the
|
||||
* data from the underlying buffer, and will fail to operate
|
||||
* properly if the data is not aligned. The standard way to use these
|
||||
@@ -224,28 +238,38 @@ struct xdr_discrim {
|
||||
/*
|
||||
* These are the "generic" xdr routines.
|
||||
*/
|
||||
extern bool_t xdr_void();
|
||||
extern bool_t xdr_int();
|
||||
extern bool_t xdr_u_int();
|
||||
extern bool_t xdr_long();
|
||||
extern bool_t xdr_u_long();
|
||||
extern bool_t xdr_short();
|
||||
extern bool_t xdr_u_short();
|
||||
extern bool_t xdr_bool();
|
||||
extern bool_t xdr_enum();
|
||||
extern bool_t xdr_array();
|
||||
extern bool_t xdr_bytes();
|
||||
extern bool_t xdr_opaque();
|
||||
extern bool_t xdr_string();
|
||||
extern bool_t xdr_union();
|
||||
extern bool_t xdr_char();
|
||||
extern bool_t xdr_u_char();
|
||||
extern bool_t xdr_vector();
|
||||
extern bool_t xdr_float();
|
||||
extern bool_t xdr_double();
|
||||
extern bool_t xdr_reference();
|
||||
extern bool_t xdr_pointer();
|
||||
extern bool_t xdr_wrapstring();
|
||||
__BEGIN_DECLS
|
||||
extern bool_t xdr_void __P((void));
|
||||
extern bool_t xdr_int __P((XDR *, int *));
|
||||
extern bool_t xdr_u_int __P((XDR *, u_int *));
|
||||
extern bool_t xdr_long __P((XDR *, long *));
|
||||
extern bool_t xdr_u_long __P((XDR *, u_long *));
|
||||
extern bool_t xdr_short __P((XDR *, short *));
|
||||
extern bool_t xdr_u_short __P((XDR *, u_short *));
|
||||
extern bool_t xdr_int16_t __P((XDR *, int16_t *));
|
||||
extern bool_t xdr_u_int16_t __P((XDR *, u_int16_t *));
|
||||
extern bool_t xdr_int32_t __P((XDR *, int32_t *));
|
||||
extern bool_t xdr_u_int32_t __P((XDR *, u_int32_t *));
|
||||
extern bool_t xdr_int64_t __P((XDR *, int64_t *));
|
||||
extern bool_t xdr_u_int64_t __P((XDR *, u_int64_t *));
|
||||
extern bool_t xdr_bool __P((XDR *, bool_t *));
|
||||
extern bool_t xdr_enum __P((XDR *, enum_t *));
|
||||
extern bool_t xdr_array __P((XDR *, char **, u_int *, u_int, u_int, xdrproc_t));
|
||||
extern bool_t xdr_bytes __P((XDR *, char **, u_int *, u_int));
|
||||
extern bool_t xdr_opaque __P((XDR *, caddr_t, u_int));
|
||||
extern bool_t xdr_string __P((XDR *, char **, u_int));
|
||||
extern bool_t xdr_union __P((XDR *, enum_t *, char *, struct xdr_discrim *, xdrproc_t));
|
||||
extern unsigned long xdr_sizeof __P((xdrproc_t, void *));
|
||||
extern bool_t xdr_char __P((XDR *, char *));
|
||||
extern bool_t xdr_u_char __P((XDR *, u_char *));
|
||||
extern bool_t xdr_vector __P((XDR *, char *, u_int, u_int, xdrproc_t));
|
||||
extern bool_t xdr_float __P((XDR *, float *));
|
||||
extern bool_t xdr_double __P((XDR *, double *));
|
||||
extern bool_t xdr_reference __P((XDR *, caddr_t *, u_int, xdrproc_t));
|
||||
extern bool_t xdr_pointer __P((XDR *, caddr_t *, u_int, xdrproc_t));
|
||||
extern bool_t xdr_wrapstring __P((XDR *, char **));
|
||||
extern void xdr_free __P((xdrproc_t, char *));
|
||||
__END_DECLS
|
||||
|
||||
/*
|
||||
* Common opaque bytes objects used by many rpc protocols;
|
||||
@@ -257,19 +281,34 @@ struct netobj {
|
||||
char *n_bytes;
|
||||
};
|
||||
typedef struct netobj netobj;
|
||||
extern bool_t xdr_netobj();
|
||||
extern bool_t xdr_netobj __P((XDR *, struct netobj *));
|
||||
|
||||
/*
|
||||
* These are the public routines for the various implementations of
|
||||
* xdr streams.
|
||||
*/
|
||||
extern void xdrmem_create(); /* XDR using memory buffers */
|
||||
extern void xdrstdio_create(); /* XDR using stdio library */
|
||||
extern void xdrrec_create(); /* XDR pseudo records for tcp */
|
||||
extern bool_t xdrrec_endofrecord(); /* make end of xdr record */
|
||||
extern bool_t xdrrec_skiprecord(); /* move to beginning of next record */
|
||||
extern bool_t xdrrec_eof(); /* true if no more input */
|
||||
__BEGIN_DECLS
|
||||
/* XDR using memory buffers */
|
||||
extern void xdrmem_create __P((XDR *, char *, u_int, enum xdr_op));
|
||||
|
||||
#endif /* !__XDR_HEADER__ */
|
||||
#ifdef _STDIO_H_
|
||||
/* XDR using stdio library */
|
||||
extern void xdrstdio_create __P((XDR *, FILE *, enum xdr_op));
|
||||
#endif
|
||||
|
||||
#endif /* RPC_XDR_H */
|
||||
/* XDR pseudo records for tcp */
|
||||
extern void xdrrec_create __P((XDR *, u_int, u_int, char *,
|
||||
int (*) __P((caddr_t, caddr_t, int)),
|
||||
int (*) __P((caddr_t, caddr_t, int))));
|
||||
|
||||
/* make end of xdr record */
|
||||
extern bool_t xdrrec_endofrecord __P((XDR *, int));
|
||||
|
||||
/* move to beginning of next record */
|
||||
extern bool_t xdrrec_skiprecord __P((XDR *));
|
||||
|
||||
/* true if no more input */
|
||||
extern bool_t xdrrec_eof __P((XDR *));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_RPC_XDR_H */
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
## $Id$
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign 1.4
|
||||
|
||||
## Currently unused
|
||||
|
||||
EXTRA_DIST = bootparam_prot.x crypt.x key_prot.x klm_prot.x mount.x \
|
||||
nfs_prot.x nis.x nis_cache.x nis_callback.x nis_db.h nis_object.x \
|
||||
nis_tags.h nislib.h nlm_prot.x pmap_prot.x rex.x rnusers.x rquota.x \
|
||||
rstat.x rwall.x sm_inter.x spray.x yp.x yp_prot.h ypclnt.h yppasswd.x \
|
||||
ypupdate_prot.x ypxfrd.x
|
||||
|
||||
include $(top_srcdir)/../../../automake/local.am
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* RPC for bootparms service.
|
||||
* There are two procedures:
|
||||
* WHOAMI takes a net address and returns a client name and also a
|
||||
* likely net address for routing
|
||||
* GETFILE takes a client name and file identifier and returns the
|
||||
* server name, server net address and pathname for the file.
|
||||
* file identifiers typically include root, swap, pub and dump
|
||||
*/
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%#include <rpc/types.h>
|
||||
%#include <sys/time.h>
|
||||
%#include <sys/errno.h>
|
||||
%#include <sys/param.h>
|
||||
%#include <sys/syslimits.h>
|
||||
%#include <sys/ucred.h>
|
||||
#else
|
||||
%#ifndef lint
|
||||
%/*static char sccsid[] = "from: @(#)bootparam_prot.x 1.2 87/06/24 Copyr 1987 Sun Micro";*/
|
||||
%/*static char sccsid[] = "from: @(#)bootparam_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/bootparam_prot.x,v 1.5 1999/08/27 23:45:07 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
const MAX_MACHINE_NAME = 255;
|
||||
const MAX_PATH_LEN = 1024;
|
||||
const MAX_FILEID = 32;
|
||||
const IP_ADDR_TYPE = 1;
|
||||
|
||||
typedef string bp_machine_name_t<MAX_MACHINE_NAME>;
|
||||
typedef string bp_path_t<MAX_PATH_LEN>;
|
||||
typedef string bp_fileid_t<MAX_FILEID>;
|
||||
|
||||
struct ip_addr_t {
|
||||
char net;
|
||||
char host;
|
||||
char lh;
|
||||
char impno;
|
||||
};
|
||||
|
||||
union bp_address switch (int address_type) {
|
||||
case IP_ADDR_TYPE:
|
||||
ip_addr_t ip_addr;
|
||||
};
|
||||
|
||||
struct bp_whoami_arg {
|
||||
bp_address client_address;
|
||||
};
|
||||
|
||||
struct bp_whoami_res {
|
||||
bp_machine_name_t client_name;
|
||||
bp_machine_name_t domain_name;
|
||||
bp_address router_address;
|
||||
};
|
||||
|
||||
struct bp_getfile_arg {
|
||||
bp_machine_name_t client_name;
|
||||
bp_fileid_t file_id;
|
||||
};
|
||||
|
||||
struct bp_getfile_res {
|
||||
bp_machine_name_t server_name;
|
||||
bp_address server_address;
|
||||
bp_path_t server_path;
|
||||
};
|
||||
|
||||
program BOOTPARAMPROG {
|
||||
version BOOTPARAMVERS {
|
||||
bp_whoami_res BOOTPARAMPROC_WHOAMI(bp_whoami_arg) = 1;
|
||||
bp_getfile_res BOOTPARAMPROC_GETFILE(bp_getfile_arg) = 2;
|
||||
} = 1;
|
||||
} = 100026;
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright (c) 1996
|
||||
* Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by Bill Paul.
|
||||
* 4. Neither the name of the author nor the names of any co-contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $FreeBSD: src/include/rpcsvc/crypt.x,v 1.3 1999/08/27 23:45:08 peter Exp $
|
||||
*/
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/crypt.x,v 1.3 1999/08/27 23:45:08 peter Exp $";
|
||||
%#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This protocol definition exists because of the U.S. government and
|
||||
* its stupid export laws. We can't export DES code from the United
|
||||
* States to other countries (even though the code already exists
|
||||
* outside the U.S. -- go figure that one out) but we need to make
|
||||
* Secure RPC work. The normal way around this is to break the DES
|
||||
* code out into a shared library; we can then provide a dummy lib
|
||||
* in the base OS and provide the real lib in the secure dist, which
|
||||
* the user can install later. But we need Secure RPC for NIS+, and
|
||||
* there are several system programs that use NIS+ which are statically
|
||||
* linked. We would have to provide replacements for these programs
|
||||
* in the secure dist, but there are a lot, and this is a pain. The
|
||||
* shared lib trick won't work for these programs, and we can't change
|
||||
* them once they're compiled.
|
||||
*
|
||||
* One solution for this problem is to do the DES encryption as a system
|
||||
* call; no programs need to be changed and we can even supply the DES
|
||||
* support as an LKM. But this bloats the kernel. Maybe if we have
|
||||
* Secure NFS one day this will be worth it, but for now we should keep
|
||||
* this mess in user space.
|
||||
*
|
||||
* So we have this second solution: we provide a server that does the
|
||||
* DES encryption for us. In this case, the server is keyserv (we need
|
||||
* it to make Secure RPC work anyway) and we use this protocol to ship
|
||||
* the data back and forth between keyserv and the application.
|
||||
*/
|
||||
|
||||
enum des_dir { ENCRYPT_DES, DECRYPT_DES };
|
||||
enum des_mode { CBC_DES, ECB_DES };
|
||||
|
||||
struct desargs {
|
||||
u_char des_key[8]; /* key (with low bit parity) */
|
||||
des_dir des_dir; /* direction */
|
||||
des_mode des_mode; /* mode */
|
||||
u_char des_ivec[8]; /* input vector */
|
||||
opaque desbuf<>;
|
||||
};
|
||||
|
||||
struct desresp {
|
||||
opaque desbuf<>;
|
||||
u_char des_ivec[8];
|
||||
int stat;
|
||||
};
|
||||
|
||||
program CRYPT_PROG {
|
||||
version CRYPT_VERS {
|
||||
desresp
|
||||
DES_CRYPT(desargs) = 1;
|
||||
} = 1;
|
||||
} = 600100029;
|
||||
|
||||
@@ -0,0 +1,284 @@
|
||||
%/*
|
||||
% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
% * unrestricted use provided that this legend is included on all tape
|
||||
% * media and as a part of the software program in whole or part. Users
|
||||
% * may copy or modify Sun RPC without charge, but are not authorized
|
||||
% * to license or distribute it to anyone else except as part of a product or
|
||||
% * program developed by the user.
|
||||
% *
|
||||
% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
% *
|
||||
% * Sun RPC is provided with no support and without any obligation on the
|
||||
% * part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
% * modification or enhancement.
|
||||
% *
|
||||
% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
% * OR ANY PART THEREOF.
|
||||
% *
|
||||
% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
% * or profits or other special, indirect and consequential damages, even if
|
||||
% * Sun has been advised of the possibility of such damages.
|
||||
% *
|
||||
% * Sun Microsystems, Inc.
|
||||
% * 2550 Garcia Avenue
|
||||
% * Mountain View, California 94043
|
||||
% */
|
||||
/*
|
||||
* Key server protocol definition
|
||||
* Copyright (C) 1990, 1991 Sun Microsystems, Inc.
|
||||
*
|
||||
* The keyserver is a public key storage/encryption/decryption service
|
||||
* The encryption method used is based on the Diffie-Hellman exponential
|
||||
* key exchange technology.
|
||||
*
|
||||
* The key server is local to each machine, akin to the portmapper.
|
||||
* Under TI-RPC, communication with the keyserver is through the
|
||||
* loopback transport.
|
||||
*
|
||||
* NOTE: This .x file generates the USER level headers for the keyserver.
|
||||
* the KERNEL level headers are created by hand as they kernel has special
|
||||
* requirements.
|
||||
*/
|
||||
|
||||
%/* From: #pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI" */
|
||||
%
|
||||
%/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
|
||||
%
|
||||
%/*
|
||||
% * Compiled from key_prot.x using rpcgen.
|
||||
% * DO NOT EDIT THIS FILE!
|
||||
% * This is NOT source code!
|
||||
% */
|
||||
|
||||
/*
|
||||
* PROOT and MODULUS define the way the Diffie-Hellman key is generated.
|
||||
*
|
||||
* MODULUS should be chosen as a prime of the form: MODULUS == 2*p + 1,
|
||||
* where p is also prime.
|
||||
*
|
||||
* PROOT satisfies the following two conditions:
|
||||
* (1) (PROOT ** 2) % MODULUS != 1
|
||||
* (2) (PROOT ** p) % MODULUS != 1
|
||||
*
|
||||
*/
|
||||
|
||||
const PROOT = 3;
|
||||
const HEXMODULUS = "d4a0ba0250b6fd2ec626e7efd637df76c716e22d0944b88b";
|
||||
|
||||
const HEXKEYBYTES = 48; /* HEXKEYBYTES == strlen(HEXMODULUS) */
|
||||
const KEYSIZE = 192; /* KEYSIZE == bit length of key */
|
||||
const KEYBYTES = 24; /* byte length of key */
|
||||
|
||||
/*
|
||||
* The first 16 hex digits of the encrypted secret key are used as
|
||||
* a checksum in the database.
|
||||
*/
|
||||
const KEYCHECKSUMSIZE = 16;
|
||||
|
||||
/*
|
||||
* status of operation
|
||||
*/
|
||||
enum keystatus {
|
||||
KEY_SUCCESS, /* no problems */
|
||||
KEY_NOSECRET, /* no secret key stored */
|
||||
KEY_UNKNOWN, /* unknown netname */
|
||||
KEY_SYSTEMERR /* system error (out of memory, encryption failure) */
|
||||
};
|
||||
|
||||
typedef opaque keybuf[HEXKEYBYTES]; /* store key in hex */
|
||||
|
||||
typedef string netnamestr<MAXNETNAMELEN>;
|
||||
|
||||
/*
|
||||
* Argument to ENCRYPT or DECRYPT
|
||||
*/
|
||||
struct cryptkeyarg {
|
||||
netnamestr remotename;
|
||||
des_block deskey;
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument to ENCRYPT_PK or DECRYPT_PK
|
||||
*/
|
||||
struct cryptkeyarg2 {
|
||||
netnamestr remotename;
|
||||
netobj remotekey; /* Contains a length up to 1024 bytes */
|
||||
des_block deskey;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Result of ENCRYPT, DECRYPT, ENCRYPT_PK, and DECRYPT_PK
|
||||
*/
|
||||
union cryptkeyres switch (keystatus status) {
|
||||
case KEY_SUCCESS:
|
||||
des_block deskey;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
const MAXGIDS = 16; /* max number of gids in gid list */
|
||||
|
||||
/*
|
||||
* Unix credential
|
||||
*/
|
||||
struct unixcred {
|
||||
u_int uid;
|
||||
u_int gid;
|
||||
u_int gids<MAXGIDS>;
|
||||
};
|
||||
|
||||
/*
|
||||
* Result returned from GETCRED
|
||||
*/
|
||||
union getcredres switch (keystatus status) {
|
||||
case KEY_SUCCESS:
|
||||
unixcred cred;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
/*
|
||||
* key_netstarg;
|
||||
*/
|
||||
|
||||
struct key_netstarg {
|
||||
keybuf st_priv_key;
|
||||
keybuf st_pub_key;
|
||||
netnamestr st_netname;
|
||||
};
|
||||
|
||||
union key_netstres switch (keystatus status){
|
||||
case KEY_SUCCESS:
|
||||
key_netstarg knet;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%
|
||||
%#ifndef opaque
|
||||
%#define opaque char
|
||||
%#endif
|
||||
%
|
||||
#endif
|
||||
program KEY_PROG {
|
||||
version KEY_VERS {
|
||||
|
||||
/*
|
||||
* This is my secret key.
|
||||
* Store it for me.
|
||||
*/
|
||||
keystatus
|
||||
KEY_SET(keybuf) = 1;
|
||||
|
||||
/*
|
||||
* I want to talk to X.
|
||||
* Encrypt a conversation key for me.
|
||||
*/
|
||||
cryptkeyres
|
||||
KEY_ENCRYPT(cryptkeyarg) = 2;
|
||||
|
||||
/*
|
||||
* X just sent me a message.
|
||||
* Decrypt the conversation key for me.
|
||||
*/
|
||||
cryptkeyres
|
||||
KEY_DECRYPT(cryptkeyarg) = 3;
|
||||
|
||||
/*
|
||||
* Generate a secure conversation key for me
|
||||
*/
|
||||
des_block
|
||||
KEY_GEN(void) = 4;
|
||||
|
||||
/*
|
||||
* Get me the uid, gid and group-access-list associated
|
||||
* with this netname (for kernel which cannot use NIS)
|
||||
*/
|
||||
getcredres
|
||||
KEY_GETCRED(netnamestr) = 5;
|
||||
} = 1;
|
||||
version KEY_VERS2 {
|
||||
|
||||
/*
|
||||
* #######
|
||||
* Procedures 1-5 are identical to version 1
|
||||
* #######
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is my secret key.
|
||||
* Store it for me.
|
||||
*/
|
||||
keystatus
|
||||
KEY_SET(keybuf) = 1;
|
||||
|
||||
/*
|
||||
* I want to talk to X.
|
||||
* Encrypt a conversation key for me.
|
||||
*/
|
||||
cryptkeyres
|
||||
KEY_ENCRYPT(cryptkeyarg) = 2;
|
||||
|
||||
/*
|
||||
* X just sent me a message.
|
||||
* Decrypt the conversation key for me.
|
||||
*/
|
||||
cryptkeyres
|
||||
KEY_DECRYPT(cryptkeyarg) = 3;
|
||||
|
||||
/*
|
||||
* Generate a secure conversation key for me
|
||||
*/
|
||||
des_block
|
||||
KEY_GEN(void) = 4;
|
||||
|
||||
/*
|
||||
* Get me the uid, gid and group-access-list associated
|
||||
* with this netname (for kernel which cannot use NIS)
|
||||
*/
|
||||
getcredres
|
||||
KEY_GETCRED(netnamestr) = 5;
|
||||
|
||||
/*
|
||||
* I want to talk to X. and I know X's public key
|
||||
* Encrypt a conversation key for me.
|
||||
*/
|
||||
cryptkeyres
|
||||
KEY_ENCRYPT_PK(cryptkeyarg2) = 6;
|
||||
|
||||
/*
|
||||
* X just sent me a message. and I know X's public key
|
||||
* Decrypt the conversation key for me.
|
||||
*/
|
||||
cryptkeyres
|
||||
KEY_DECRYPT_PK(cryptkeyarg2) = 7;
|
||||
|
||||
/*
|
||||
* Store my public key, netname and private key.
|
||||
*/
|
||||
keystatus
|
||||
KEY_NET_PUT(key_netstarg) = 8;
|
||||
|
||||
/*
|
||||
* Retrieve my public key, netname and private key.
|
||||
*/
|
||||
key_netstres
|
||||
KEY_NET_GET(void) = 9;
|
||||
|
||||
/*
|
||||
* Return me the conversation key that is constructed
|
||||
* from my secret key and this publickey.
|
||||
*/
|
||||
|
||||
cryptkeyres
|
||||
KEY_GET_CONV(keybuf) = 10;
|
||||
|
||||
|
||||
} = 2;
|
||||
} = 100029;
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Kernel/lock manager protocol definition
|
||||
* Copyright (C) 1986 Sun Microsystems, Inc.
|
||||
*
|
||||
* protocol used between the UNIX kernel (the "client") and the
|
||||
* local lock manager. The local lock manager is a deamon running
|
||||
* above the kernel.
|
||||
*/
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%/*static char sccsid[] = "from: @(#)klm_prot.x 1.7 87/07/08 Copyr 1987 Sun Micro";*/
|
||||
%/*static char sccsid[] = "from: @(#)klm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/klm_prot.x,v 1.6 1999/08/27 23:45:08 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
const LM_MAXSTRLEN = 1024;
|
||||
|
||||
/*
|
||||
* lock manager status returns
|
||||
*/
|
||||
enum klm_stats {
|
||||
klm_granted = 0, /* lock is granted */
|
||||
klm_denied = 1, /* lock is denied */
|
||||
klm_denied_nolocks = 2, /* no lock entry available */
|
||||
klm_working = 3 /* lock is being processed */
|
||||
};
|
||||
|
||||
/*
|
||||
* lock manager lock identifier
|
||||
*/
|
||||
struct klm_lock {
|
||||
string server_name<LM_MAXSTRLEN>;
|
||||
netobj fh; /* a counted file handle */
|
||||
int pid; /* holder of the lock */
|
||||
unsigned l_offset; /* beginning offset of the lock */
|
||||
unsigned l_len; /* byte length of the lock;
|
||||
* zero means through end of file */
|
||||
};
|
||||
|
||||
/*
|
||||
* lock holder identifier
|
||||
*/
|
||||
struct klm_holder {
|
||||
bool exclusive; /* FALSE if shared lock */
|
||||
int svid; /* holder of the lock (pid) */
|
||||
unsigned l_offset; /* beginning offset of the lock */
|
||||
unsigned l_len; /* byte length of the lock;
|
||||
* zero means through end of file */
|
||||
};
|
||||
|
||||
/*
|
||||
* reply to KLM_LOCK / KLM_UNLOCK / KLM_CANCEL
|
||||
*/
|
||||
struct klm_stat {
|
||||
klm_stats stat;
|
||||
};
|
||||
|
||||
/*
|
||||
* reply to a KLM_TEST call
|
||||
*/
|
||||
union klm_testrply switch (klm_stats stat) {
|
||||
case klm_denied:
|
||||
struct klm_holder holder;
|
||||
default: /* All other cases return no arguments */
|
||||
void;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* arguments to KLM_LOCK
|
||||
*/
|
||||
struct klm_lockargs {
|
||||
bool block;
|
||||
bool exclusive;
|
||||
struct klm_lock alock;
|
||||
};
|
||||
|
||||
/*
|
||||
* arguments to KLM_TEST
|
||||
*/
|
||||
struct klm_testargs {
|
||||
bool exclusive;
|
||||
struct klm_lock alock;
|
||||
};
|
||||
|
||||
/*
|
||||
* arguments to KLM_UNLOCK
|
||||
*/
|
||||
struct klm_unlockargs {
|
||||
struct klm_lock alock;
|
||||
};
|
||||
|
||||
program KLM_PROG {
|
||||
version KLM_VERS {
|
||||
|
||||
klm_testrply KLM_TEST (struct klm_testargs) = 1;
|
||||
|
||||
klm_stat KLM_LOCK (struct klm_lockargs) = 2;
|
||||
|
||||
klm_stat KLM_CANCEL (struct klm_lockargs) = 3;
|
||||
/* klm_granted=> the cancel request fails due to lock is already granted */
|
||||
/* klm_denied=> the cancel request successfully aborts
|
||||
lock request */
|
||||
|
||||
klm_stat KLM_UNLOCK (struct klm_unlockargs) = 4;
|
||||
} = 1;
|
||||
} = 100020;
|
||||
|
||||
@@ -0,0 +1,257 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Protocol description for the mount program
|
||||
*/
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%/*static char sccsid[] = "from: @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro";*/
|
||||
%/*static char sccsid[] = "from: @(#)mount.x 2.1 88/08/01 4.0 RPCSRC";*/
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/mount.x,v 1.6 1999/08/27 23:45:08 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
const MNTPATHLEN = 1024; /* maximum bytes in a pathname argument */
|
||||
const MNTNAMLEN = 255; /* maximum bytes in a name argument */
|
||||
const FHSIZE = 32; /* size in bytes of a file handle */
|
||||
#ifdef WANT_NFS3
|
||||
const FHSIZE3 = 64; /* size in bytes of a file handle (v3) */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The fhandle is the file handle that the server passes to the client.
|
||||
* All file operations are done using the file handles to refer to a file
|
||||
* or a directory. The file handle can contain whatever information the
|
||||
* server needs to distinguish an individual file.
|
||||
*/
|
||||
typedef opaque fhandle[FHSIZE];
|
||||
#ifdef WANT_NFS3
|
||||
typedef opaque fhandle3<FHSIZE3>;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If a status of zero is returned, the call completed successfully, and
|
||||
* a file handle for the directory follows. A non-zero status indicates
|
||||
* some sort of error. The status corresponds with UNIX error numbers.
|
||||
*/
|
||||
union fhstatus switch (unsigned fhs_status) {
|
||||
case 0:
|
||||
fhandle fhs_fhandle;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
#ifdef WANT_NFS3
|
||||
/*
|
||||
* Status codes returned by the version 3 mount call.
|
||||
*/
|
||||
enum mountstat3 {
|
||||
MNT3_OK = 0, /* no error */
|
||||
MNT3ERR_PERM = 1, /* Not owner */
|
||||
MNT3ERR_NOENT = 2, /* No such file or directory */
|
||||
MNT3ERR_IO = 5, /* I/O error */
|
||||
MNT3ERR_ACCES = 13, /* Permission denied */
|
||||
MNT3ERR_NOTDIR = 20, /* Not a directory */
|
||||
MNT3ERR_INVAL = 22, /* Invalid argument */
|
||||
MNT3ERR_NAMETOOLONG = 63, /* Filename too long */
|
||||
MNT3ERR_NOTSUPP = 10004, /* Operation not supported */
|
||||
MNT3ERR_SERVERFAULT = 10006 /* A failure on the server */
|
||||
};
|
||||
|
||||
struct mountres3_ok {
|
||||
fhandle3 fhandle;
|
||||
int auth_flavors<>;
|
||||
};
|
||||
|
||||
union mountres3 switch (mountstat3 fhs_status) {
|
||||
case 0:
|
||||
mountres3_ok mountinfo;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The type dirpath is the pathname of a directory
|
||||
*/
|
||||
typedef string dirpath<MNTPATHLEN>;
|
||||
|
||||
/*
|
||||
* The type name is used for arbitrary names (hostnames, groupnames)
|
||||
*/
|
||||
typedef string name<MNTNAMLEN>;
|
||||
|
||||
/*
|
||||
* A list of who has what mounted
|
||||
*/
|
||||
typedef struct mountbody *mountlist;
|
||||
struct mountbody {
|
||||
name ml_hostname;
|
||||
dirpath ml_directory;
|
||||
mountlist ml_next;
|
||||
};
|
||||
|
||||
/*
|
||||
* A list of netgroups
|
||||
*/
|
||||
typedef struct groupnode *groups;
|
||||
struct groupnode {
|
||||
name gr_name;
|
||||
groups gr_next;
|
||||
};
|
||||
|
||||
/*
|
||||
* A list of what is exported and to whom
|
||||
*/
|
||||
typedef struct exportnode *exports;
|
||||
struct exportnode {
|
||||
dirpath ex_dir;
|
||||
groups ex_groups;
|
||||
exports ex_next;
|
||||
};
|
||||
|
||||
program MOUNTPROG {
|
||||
/*
|
||||
* Version one of the mount protocol communicates with version two
|
||||
* of the NFS protocol. Version three communicates with
|
||||
* version three of the NFS protocol. The only connecting
|
||||
* point is the fhandle structure, which is the same for both
|
||||
* protocols.
|
||||
*/
|
||||
version MOUNTVERS {
|
||||
/*
|
||||
* Does no work. It is made available in all RPC services
|
||||
* to allow server reponse testing and timing
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_NULL(void) = 0;
|
||||
|
||||
/*
|
||||
* If fhs_status is 0, then fhs_fhandle contains the
|
||||
* file handle for the directory. This file handle may
|
||||
* be used in the NFS protocol. This procedure also adds
|
||||
* a new entry to the mount list for this client mounting
|
||||
* the directory.
|
||||
* Unix authentication required.
|
||||
*/
|
||||
fhstatus
|
||||
MOUNTPROC_MNT(dirpath) = 1;
|
||||
|
||||
/*
|
||||
* Returns the list of remotely mounted filesystems. The
|
||||
* mountlist contains one entry for each hostname and
|
||||
* directory pair.
|
||||
*/
|
||||
mountlist
|
||||
MOUNTPROC_DUMP(void) = 2;
|
||||
|
||||
/*
|
||||
* Removes the mount list entry for the directory
|
||||
* Unix authentication required.
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_UMNT(dirpath) = 3;
|
||||
|
||||
/*
|
||||
* Removes all of the mount list entries for this client
|
||||
* Unix authentication required.
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_UMNTALL(void) = 4;
|
||||
|
||||
/*
|
||||
* Returns a list of all the exported filesystems, and which
|
||||
* machines are allowed to import it.
|
||||
*/
|
||||
exports
|
||||
MOUNTPROC_EXPORT(void) = 5;
|
||||
|
||||
/*
|
||||
* Identical to MOUNTPROC_EXPORT above
|
||||
*/
|
||||
exports
|
||||
MOUNTPROC_EXPORTALL(void) = 6;
|
||||
} = 1;
|
||||
#ifdef WANT_NFS3
|
||||
version MOUNTVERS3 {
|
||||
/*
|
||||
* Does no work. It is made available in all RPC services
|
||||
* to allow server reponse testing and timing
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_NULL(void) = 0;
|
||||
|
||||
/*
|
||||
* If mountres3.fhs_status is MNT3_OK, then
|
||||
* mountres3.mountinfo contains the file handle for
|
||||
* the directory and a list of acceptable
|
||||
* authentication flavors. This file handle may only
|
||||
* be used in the NFS version 3 protocol. This
|
||||
* procedure also results in the server adding a new
|
||||
* entry to its mount list recording that this client
|
||||
* has mounted the directory. AUTH_UNIX authentication
|
||||
* or better is required.
|
||||
*/
|
||||
mountres3
|
||||
MOUNTPROC_MNT(dirpath) = 1;
|
||||
|
||||
/*
|
||||
* Returns the list of remotely mounted filesystems. The
|
||||
* mountlist contains one entry for each hostname and
|
||||
* directory pair.
|
||||
*/
|
||||
mountlist
|
||||
MOUNTPROC_DUMP(void) = 2;
|
||||
|
||||
/*
|
||||
* Removes the mount list entry for the directory
|
||||
* Unix authentication required.
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_UMNT(dirpath) = 3;
|
||||
|
||||
/*
|
||||
* Removes all of the mount list entries for this client
|
||||
* Unix authentication required.
|
||||
*/
|
||||
void
|
||||
MOUNTPROC_UMNTALL(void) = 4;
|
||||
|
||||
/*
|
||||
* Returns a list of all the exported filesystems, and which
|
||||
* machines are allowed to import it.
|
||||
*/
|
||||
exports
|
||||
MOUNTPROC_EXPORT(void) = 5;
|
||||
} = 3;
|
||||
#endif
|
||||
} = 100005;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,466 @@
|
||||
%/*
|
||||
% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
% * unrestricted use provided that this legend is included on all tape
|
||||
% * media and as a part of the software program in whole or part. Users
|
||||
% * may copy or modify Sun RPC without charge, but are not authorized
|
||||
% * to license or distribute it to anyone else except as part of a product or
|
||||
% * program developed by the user or with the express written consent of
|
||||
% * Sun Microsystems, Inc.
|
||||
% *
|
||||
% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
% *
|
||||
% * Sun RPC is provided with no support and without any obligation on the
|
||||
% * part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
% * modification or enhancement.
|
||||
% *
|
||||
% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
% * OR ANY PART THEREOF.
|
||||
% *
|
||||
% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
% * or profits or other special, indirect and consequential damages, even if
|
||||
% * Sun has been advised of the possibility of such damages.
|
||||
% *
|
||||
% * Sun Microsystems, Inc.
|
||||
% * 2550 Garcia Avenue
|
||||
% * Mountain View, California 94043
|
||||
% */
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/nis.x,v 1.3 1999/08/27 23:45:09 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* From 4.1 : @(#)nis.x 1.61 Copyright 1989 Sun Microsystems
|
||||
*
|
||||
* RPC Language Protocol description file for NIS Plus
|
||||
* This version : 1.61
|
||||
* Last Modified : 3/19/91
|
||||
*/
|
||||
#ifdef RPC_HDR
|
||||
%/*
|
||||
% * nis.h
|
||||
% *
|
||||
% * This file is the main include file for NIS clients. It contains
|
||||
% * both the client library function defines and the various data
|
||||
% * structures used by the NIS service. It includes the file nis_tags.h
|
||||
% * which defines the tag values. This allows the tags to change without
|
||||
% * having to change the nis.x file.
|
||||
% *
|
||||
% * NOTE : DO NOT EDIT THIS FILE! It is automatically generated when
|
||||
% * rpcgen is run on the nis.x file. Note that there is a
|
||||
% * simple sed script to remove some unneeded lines. (See the
|
||||
% * Makefile target nis.h)
|
||||
% *
|
||||
% */
|
||||
%#include <rpcsvc/nis_tags.h>
|
||||
#endif
|
||||
|
||||
/* This gets stuffed into the source files. */
|
||||
#if RPC_HDR
|
||||
%#include <rpc/xdr.h>
|
||||
#endif
|
||||
/*
|
||||
* This is just pointless.
|
||||
*/
|
||||
#ifdef SUN_STUPIDITY
|
||||
#if RPC_SVC
|
||||
%#include "nis_svc.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Include the RPC Language description of NIS objects */
|
||||
#include "nis_object.x"
|
||||
|
||||
/* Errors that can be returned by the service */
|
||||
enum nis_error {
|
||||
NIS_SUCCESS = 0, /* A-ok, let's rock n roll */
|
||||
NIS_S_SUCCESS = 1, /* Name found (maybe) */
|
||||
NIS_NOTFOUND = 2, /* Name definitely not found */
|
||||
NIS_S_NOTFOUND = 3, /* Name maybe not found */
|
||||
NIS_CACHEEXPIRED = 4, /* Name exists but cache out of date */
|
||||
NIS_NAMEUNREACHABLE = 5, /* Can't get there from here */
|
||||
NIS_UNKNOWNOBJ = 6, /* Object type is bogus */
|
||||
NIS_TRYAGAIN = 7, /* I'm busy, call back */
|
||||
NIS_SYSTEMERROR = 8, /* Out of band failure */
|
||||
NIS_CHAINBROKEN = 9, /* First/Next warning */
|
||||
NIS_PERMISSION = 10, /* Not enough permission to access */
|
||||
NIS_NOTOWNER = 11, /* You don't own it, sorry */
|
||||
NIS_NOT_ME = 12, /* I don't serve this name */
|
||||
NIS_NOMEMORY = 13, /* Outta VM! Help! */
|
||||
NIS_NAMEEXISTS = 14, /* Can't create over another name */
|
||||
NIS_NOTMASTER = 15, /* I'm justa secondaray, don't ask me */
|
||||
NIS_INVALIDOBJ = 16, /* Object is broken somehow */
|
||||
NIS_BADNAME = 17, /* Unparsable name */
|
||||
NIS_NOCALLBACK = 18, /* Couldn't talk to call back proc */
|
||||
NIS_CBRESULTS = 19, /* Results being called back to you */
|
||||
NIS_NOSUCHNAME = 20, /* Name unknown */
|
||||
NIS_NOTUNIQUE = 21, /* Value is not uniques (entry) */
|
||||
NIS_IBMODERROR = 22, /* Inf. Base. Modify error. */
|
||||
NIS_NOSUCHTABLE = 23, /* Name for table was wrong */
|
||||
NIS_TYPEMISMATCH = 24, /* Entry and table type mismatch */
|
||||
NIS_LINKNAMEERROR = 25, /* Link points to bogus name */
|
||||
NIS_PARTIAL = 26, /* Partial success, found table */
|
||||
NIS_TOOMANYATTRS = 27, /* Too many attributes */
|
||||
NIS_RPCERROR = 28, /* RPC error encountered */
|
||||
NIS_BADATTRIBUTE = 29, /* Bad or invalid attribute */
|
||||
NIS_NOTSEARCHABLE = 30, /* Non-searchable object searched */
|
||||
NIS_CBERROR = 31, /* Error during callback (svc crash) */
|
||||
NIS_FOREIGNNS = 32, /* Foreign Namespace */
|
||||
NIS_BADOBJECT = 33, /* Malformed object structure */
|
||||
NIS_NOTSAMEOBJ = 34, /* Object swapped during deletion */
|
||||
NIS_MODFAIL = 35, /* Failure during a Modify. */
|
||||
NIS_BADREQUEST = 36, /* Illegal query for table */
|
||||
NIS_NOTEMPTY = 37, /* Attempt to remove a non-empty tbl */
|
||||
NIS_COLDSTART_ERR = 38, /* Error accesing the cold start file */
|
||||
NIS_RESYNC = 39, /* Transaction log too far out of date */
|
||||
NIS_FAIL = 40, /* NIS operation failed. */
|
||||
NIS_UNAVAIL = 41, /* NIS+ service is unavailable (client) */
|
||||
NIS_RES2BIG = 42, /* NIS+ result too big for datagram */
|
||||
NIS_SRVAUTH = 43, /* NIS+ server wasn't authenticated. */
|
||||
NIS_CLNTAUTH = 44, /* NIS+ Client wasn't authenticated. */
|
||||
NIS_NOFILESPACE = 45, /* NIS+ server ran out of disk space */
|
||||
NIS_NOPROC = 46, /* NIS+ server couldn't create new proc */
|
||||
NIS_DUMPLATER = 47 /* NIS+ server already has dump child */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Structure definitions for the parameters and results of the actual
|
||||
* NIS RPC calls.
|
||||
*
|
||||
* This is the standard result (in the protocol) of most of the nis
|
||||
* requests.
|
||||
*/
|
||||
|
||||
struct nis_result {
|
||||
nis_error status; /* Status of the response */
|
||||
nis_object objects<>; /* objects found */
|
||||
netobj cookie; /* Cookie Data */
|
||||
u_long zticks; /* server ticks */
|
||||
u_long dticks; /* DBM ticks. */
|
||||
u_long aticks; /* Cache (accel) ticks */
|
||||
u_long cticks; /* Client ticks */
|
||||
};
|
||||
|
||||
/*
|
||||
* A Name Service request
|
||||
* This request is used to access the name space, ns_name is the name
|
||||
* of the object within the namespace and the object is it's value, for
|
||||
* add/modify, a copy of the original for remove.
|
||||
*/
|
||||
|
||||
struct ns_request {
|
||||
nis_name ns_name; /* Name in the NIS name space */
|
||||
nis_object ns_object<1>; /* Optional Object (add/remove) */
|
||||
};
|
||||
|
||||
/*
|
||||
* An information base request
|
||||
* This request includes the NIS name of the table we wish to search, the
|
||||
* search criteria in the form of attribute/value pairs and an optional
|
||||
* callback program number. If the callback program number is provided
|
||||
* the server will send back objects one at a time, otherwise it will
|
||||
* return them all in the response.
|
||||
*/
|
||||
|
||||
struct ib_request {
|
||||
nis_name ibr_name; /* The name of the Table */
|
||||
nis_attr ibr_srch<>; /* The search critereia */
|
||||
u_long ibr_flags; /* Optional flags */
|
||||
nis_object ibr_obj<1>; /* optional object (add/modify) */
|
||||
nis_server ibr_cbhost<1>; /* Optional callback info */
|
||||
u_long ibr_bufsize; /* Optional first/next bufsize */
|
||||
netobj ibr_cookie; /* The first/next cookie */
|
||||
};
|
||||
|
||||
/*
|
||||
* This argument to the PING call notifies the replicas that something in
|
||||
* a directory has changed and this is it's timestamp. The replica will use
|
||||
* the timestamp to determine if its resync operation was successful.
|
||||
*/
|
||||
struct ping_args {
|
||||
nis_name dir; /* Directory that had the change */
|
||||
u_long stamp; /* timestamp of the transaction */
|
||||
};
|
||||
|
||||
/*
|
||||
* These are the type of entries that are stored in the transaction log,
|
||||
* note that modifications will appear as two entries, for names, they have
|
||||
* a "OLD" entry followed by a "NEW" entry. For entries in tables, there
|
||||
* is a remove followed by an add. It is done this way so that we can read
|
||||
* the log backwards to back out transactions and forwards to propogate
|
||||
* updated.
|
||||
*/
|
||||
enum log_entry_t {
|
||||
LOG_NOP = 0,
|
||||
ADD_NAME = 1, /* Name Added to name space */
|
||||
REM_NAME = 2, /* Name removed from name space */
|
||||
MOD_NAME_OLD = 3, /* Name was modified in the name space */
|
||||
MOD_NAME_NEW = 4, /* Name was modified in the name space */
|
||||
ADD_IBASE = 5, /* Entry added to information base */
|
||||
REM_IBASE = 6, /* Entry removed from information base */
|
||||
MOD_IBASE = 7, /* Entry was modified in information base */
|
||||
UPD_STAMP = 8 /* Update timestamp (used as fenceposts) */
|
||||
};
|
||||
|
||||
/*
|
||||
* This result is returned from the name service when it is requested to
|
||||
* dump logged entries from its transaction log. Information base updates
|
||||
* will have the name of the information base in the le_name field and
|
||||
* a canonical set of attribute/value pairs to fully specify the entry's
|
||||
* 'name'.
|
||||
*/
|
||||
struct log_entry {
|
||||
u_long le_time; /* Time in seconds */
|
||||
log_entry_t le_type; /* Type of log entry */
|
||||
nis_name le_princp; /* Principal making the change */
|
||||
nis_name le_name; /* Name of table/dir involved */
|
||||
nis_attr le_attrs<>; /* List of AV pairs. */
|
||||
nis_object le_object; /* Actual object value */
|
||||
};
|
||||
|
||||
struct log_result {
|
||||
nis_error lr_status; /* The status itself */
|
||||
netobj lr_cookie; /* Used by the dump callback */
|
||||
log_entry lr_entries<>; /* zero or more entries */
|
||||
};
|
||||
|
||||
struct cp_result {
|
||||
nis_error cp_status; /* Status of the checkpoint */
|
||||
u_long cp_zticks; /* Service 'ticks' */
|
||||
u_long cp_dticks; /* Database 'ticks' */
|
||||
};
|
||||
|
||||
/*
|
||||
* This structure defines a generic NIS tag list. The taglist contains
|
||||
* zero or tags, each of which is a type and a value. (u_long).
|
||||
* These are used to report statistics (see tag definitions below)
|
||||
* and to set or reset state variables.
|
||||
*/
|
||||
struct nis_tag {
|
||||
u_long tag_type; /* Statistic tag (may vary) */
|
||||
string tag_val<1024>; /* Statistic value may also vary */
|
||||
};
|
||||
|
||||
struct nis_taglist {
|
||||
nis_tag tags<>; /* List of tags */
|
||||
};
|
||||
|
||||
struct dump_args {
|
||||
nis_name da_dir; /* Directory to dump */
|
||||
u_long da_time; /* From this timestamp */
|
||||
nis_server da_cbhost<1>; /* Callback to use. */
|
||||
};
|
||||
|
||||
struct fd_args {
|
||||
nis_name dir_name; /* The directory we're looking for */
|
||||
nis_name requester; /* Host principal name for signature */
|
||||
};
|
||||
|
||||
struct fd_result {
|
||||
nis_error status; /* Status returned by function */
|
||||
nis_name source; /* Source of this answer */
|
||||
opaque dir_data<>; /* Directory Data (XDR'ed) */
|
||||
opaque signature<>; /* Signature of the source */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* What's going on here? Well, it's like this. When the service
|
||||
* is being compiled it wants to have the service definition specific
|
||||
* info included, and when the client is being compiled it wants that
|
||||
* info. This includes the appropriate file which was generated by
|
||||
* make in the protocols directory (probably /usr/include/rpcsvc).
|
||||
*
|
||||
* Uhm... guys? With RPC, you aren't supposed to have seperate
|
||||
* server-specific and client-specific header files. You have one header
|
||||
* file that's suitable for both. If your code doesn't work using just
|
||||
* the one header file, I submit to you that it's broken.
|
||||
* -Bill
|
||||
*/
|
||||
#ifdef SUN_STUPIDITY
|
||||
#ifdef RPC_SVC
|
||||
%#include "nis_svc.h"
|
||||
#endif
|
||||
#ifdef RPC_CLNT
|
||||
%#include "nis_clnt.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
program NIS_PROG {
|
||||
|
||||
/* RPC Language description of the NIS+ protocol */
|
||||
version NIS_VERSION {
|
||||
/* The name service functions */
|
||||
nis_result NIS_LOOKUP(ns_request) = 1;
|
||||
nis_result NIS_ADD(ns_request) = 2;
|
||||
nis_result NIS_MODIFY(ns_request) = 3;
|
||||
nis_result NIS_REMOVE(ns_request) = 4;
|
||||
|
||||
/* The information base functions */
|
||||
nis_result NIS_IBLIST(ib_request) = 5;
|
||||
nis_result NIS_IBADD(ib_request) = 6;
|
||||
nis_result NIS_IBMODIFY(ib_request) = 7;
|
||||
nis_result NIS_IBREMOVE(ib_request) = 8;
|
||||
nis_result NIS_IBFIRST(ib_request) = 9;
|
||||
nis_result NIS_IBNEXT(ib_request) = 10;
|
||||
|
||||
/* NIS Administrative functions */
|
||||
fd_result NIS_FINDDIRECTORY(fd_args) = 12;
|
||||
|
||||
/* If fetch and optionally reset statistics */
|
||||
nis_taglist NIS_STATUS(nis_taglist) = 14;
|
||||
|
||||
/* Dump changes to directory since time in da_time */
|
||||
log_result NIS_DUMPLOG(dump_args) = 15;
|
||||
|
||||
/* Dump contents of directory named */
|
||||
log_result NIS_DUMP(dump_args) = 16;
|
||||
|
||||
/* Check status of callback thread */
|
||||
bool NIS_CALLBACK(netobj) = 17;
|
||||
|
||||
/* Return last update time for named dir */
|
||||
u_long NIS_CPTIME(nis_name) = 18;
|
||||
|
||||
/* Checkpoint directory or table named */
|
||||
cp_result NIS_CHECKPOINT(nis_name) = 19;
|
||||
|
||||
/* Send 'status changed' ping to replicates */
|
||||
void NIS_PING(ping_args) = 20;
|
||||
|
||||
/* Modify server behaviour (such as debugging) */
|
||||
nis_taglist NIS_SERVSTATE(nis_taglist) = 21;
|
||||
|
||||
/* Create a Directory */
|
||||
nis_error NIS_MKDIR(nis_name) = 22;
|
||||
|
||||
/* Remove a Directory */
|
||||
nis_error NIS_RMDIR(nis_name) = 23;
|
||||
|
||||
/* Update public keys of a directory object */
|
||||
nis_error NIS_UPDKEYS(nis_name) = 24;
|
||||
} = 3;
|
||||
} = 100300;
|
||||
|
||||
/*
|
||||
* Included below are the defines that become part of nis.h,
|
||||
* they are technically not part of the protocol, but do define
|
||||
* key aspects of the implementation and are therefore useful
|
||||
* in building a conforming server or client.
|
||||
*/
|
||||
#if RPC_HDR
|
||||
%/*
|
||||
% * Generic "hash" datastructures, used by all types of hashed data.
|
||||
% */
|
||||
%struct nis_hash_data {
|
||||
% nis_name name; /* NIS name of hashed item */
|
||||
% int keychain; /* It's hash key (for pop) */
|
||||
% struct nis_hash_data *next; /* Hash collision pointer */
|
||||
% struct nis_hash_data *prv_item; /* A serial, doubly linked list */
|
||||
% struct nis_hash_data *nxt_item; /* of items in the hash table */
|
||||
%};
|
||||
%typedef struct nis_hash_data NIS_HASH_ITEM;
|
||||
%
|
||||
%struct nis_hash_table {
|
||||
% NIS_HASH_ITEM *keys[64]; /* A hash table of items */
|
||||
% NIS_HASH_ITEM *first; /* The first "item" in serial list */
|
||||
%};
|
||||
%typedef struct nis_hash_table NIS_HASH_TABLE;
|
||||
%
|
||||
%/* Structure for storing dynamically allocated static data */
|
||||
%struct nis_sdata {
|
||||
% void *buf; /* Memory allocation pointer */
|
||||
% u_long size; /* Buffer size */
|
||||
%};
|
||||
%
|
||||
%/* Generic client creating flags */
|
||||
%#define ZMH_VC 1
|
||||
%#define ZMH_DG 2
|
||||
%#define ZMH_AUTH 4
|
||||
%
|
||||
%/* Testing Access rights for objects */
|
||||
%
|
||||
%#define NIS_READ_ACC 1
|
||||
%#define NIS_MODIFY_ACC 2
|
||||
%#define NIS_CREATE_ACC 4
|
||||
%#define NIS_DESTROY_ACC 8
|
||||
%/* Test macros. a == access rights, m == desired rights. */
|
||||
%#define WORLD(a, m) (((a) & (m)) != 0)
|
||||
%#define GROUP(a, m) (((a) & ((m) << 8)) != 0)
|
||||
%#define OWNER(a, m) (((a) & ((m) << 16)) != 0)
|
||||
%#define NOBODY(a, m) (((a) & ((m) << 24)) != 0)
|
||||
%
|
||||
%#define OATYPE(d, n) (((d)->do_armask.do_armask_val+n)->oa_otype)
|
||||
%#define OARIGHTS(d, n) (((d)->do_armask.do_armask_val+n)->oa_rights)
|
||||
%#define WORLD_DEFAULT (NIS_READ_ACC)
|
||||
%#define GROUP_DEFAULT (NIS_READ_ACC << 8)
|
||||
%#define OWNER_DEFAULT ((NIS_READ_ACC +\
|
||||
NIS_MODIFY_ACC +\
|
||||
NIS_CREATE_ACC +\
|
||||
NIS_DESTROY_ACC) << 16)
|
||||
%#define DEFAULT_RIGHTS (WORLD_DEFAULT | GROUP_DEFAULT | OWNER_DEFAULT)
|
||||
%
|
||||
%/* Result manipulation defines ... */
|
||||
%#define NIS_RES_NUMOBJ(x) ((x)->objects.objects_len)
|
||||
%#define NIS_RES_OBJECT(x) ((x)->objects.objects_val)
|
||||
%#define NIS_RES_COOKIE(x) ((x)->cookie)
|
||||
%#define NIS_RES_STATUS(x) ((x)->status)
|
||||
%
|
||||
%/* These defines make getting at the variant part of the object easier. */
|
||||
%#define TA_data zo_data.objdata_u.ta_data
|
||||
%#define EN_data zo_data.objdata_u.en_data
|
||||
%#define DI_data zo_data.objdata_u.di_data
|
||||
%#define LI_data zo_data.objdata_u.li_data
|
||||
%#define GR_data zo_data.objdata_u.gr_data
|
||||
%
|
||||
%#define __type_of(o) ((o)->zo_data.zo_type)
|
||||
%
|
||||
%/* Declarations for the internal subroutines in nislib.c */
|
||||
%enum name_pos {SAME_NAME, HIGHER_NAME, LOWER_NAME, NOT_SEQUENTIAL, BAD_NAME};
|
||||
%typedef enum name_pos name_pos;
|
||||
%
|
||||
%/*
|
||||
% * Defines for getting at column data in entry objects. Because RPCGEN
|
||||
% * generates some rather wordy structures, we create some defines that
|
||||
% * collapse the needed keystrokes to access a particular value using
|
||||
% * these definitions they take an nis_object *, and an int and return
|
||||
% * a u_char * for Value, and an int for length.
|
||||
% */
|
||||
%#define ENTRY_VAL(obj, col) \
|
||||
(obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val
|
||||
%#define ENTRY_LEN(obj, col) \
|
||||
(obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len
|
||||
%
|
||||
%#ifdef __cplusplus
|
||||
%}
|
||||
%#endif
|
||||
%
|
||||
%/* Prototypes, and extern declarations for the NIS library functions. */
|
||||
%#include <rpcsvc/nislib.h>
|
||||
%#endif /* __NIS_RPCGEN_H */
|
||||
%/* EDIT_START */
|
||||
%
|
||||
%/*
|
||||
% * nis_3.h
|
||||
% *
|
||||
% * This file contains definitions that are only of interest to the actual
|
||||
% * service daemon and client stubs. Normal users of NIS will not include
|
||||
% * this file.
|
||||
% *
|
||||
% * NOTE : This include file is automatically created by a combination
|
||||
% * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead
|
||||
% * and then remake this file.
|
||||
% */
|
||||
%#ifndef __nis_3_h
|
||||
%#define __nis_3_h
|
||||
%#ifdef __cplusplus
|
||||
%extern "C" {
|
||||
%#endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
%/*
|
||||
% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
% * unrestricted use provided that this legend is included on all tape
|
||||
% * media and as a part of the software program in whole or part. Users
|
||||
% * may copy or modify Sun RPC without charge, but are not authorized
|
||||
% * to license or distribute it to anyone else except as part of a product or
|
||||
% * program developed by the user or with the express written consent of
|
||||
% * Sun Microsystems, Inc.
|
||||
% *
|
||||
% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
% *
|
||||
% * Sun RPC is provided with no support and without any obligation on the
|
||||
% * part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
% * modification or enhancement.
|
||||
% *
|
||||
% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
% * OR ANY PART THEREOF.
|
||||
% *
|
||||
% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
% * or profits or other special, indirect and consequential damages, even if
|
||||
% * Sun has been advised of the possibility of such damages.
|
||||
% *
|
||||
% * Sun Microsystems, Inc.
|
||||
% * 2550 Garcia Avenue
|
||||
% * Mountain View, California 94043
|
||||
% */
|
||||
|
||||
/*
|
||||
* nis_cache.x
|
||||
*
|
||||
* Copyright (c) 1988-1992 Sun Microsystems Inc
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
/* From: %#pragma ident "@(#)nis_cache.x 1.11 94/05/03 SMI" */
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/nis_cache.x,v 1.3 1999/08/27 23:45:09 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%#include <rpc/types.h>
|
||||
%#include <rpcsvc/nis.h>
|
||||
%
|
||||
%/* default cache file */
|
||||
%#define CACHEFILE "/var/nis/NIS_SHARED_DIRCACHE"
|
||||
%
|
||||
%/* clients have to read-lock the cache file, and SVR4 locking requires that */
|
||||
%/* the file be writable, but we don't want a world-writable cache file. */
|
||||
%/* So... everyone agrees to use a different, world-writable file for the */
|
||||
%/* locking operations, but the data is in CACHEFILE. */
|
||||
%#define CACHELOCK "/usr/tmp/.NIS_DIR_CACHELOCK"
|
||||
%
|
||||
%/* the file containing one trusted XDR'ed directory object.
|
||||
% * This has to be present for the system to work.
|
||||
% */
|
||||
%#define COLD_START_FILE "/var/nis/NIS_COLD_START"
|
||||
%
|
||||
%enum pc_status {HIT, MISS, NEAR_MISS};
|
||||
%
|
||||
%extern int __nis_debuglevel;
|
||||
%
|
||||
%
|
||||
#endif
|
||||
|
||||
#ifdef RPC_CLNT
|
||||
#ifdef SOLARIS
|
||||
%#include "../gen/nis_clnt.h"
|
||||
#else
|
||||
%#include "nis.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
program CACHEPROG {
|
||||
version CACHE_VER_1 {
|
||||
void NIS_CACHE_ADD_ENTRY(fd_result) = 1;
|
||||
void NIS_CACHE_REMOVE_ENTRY(directory_obj) = 2;
|
||||
void NIS_CACHE_READ_COLDSTART(void) = 3;
|
||||
void NIS_CACHE_REFRESH_ENTRY(string<>) = 4;
|
||||
} = 1;
|
||||
} = 100301;
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
%/*
|
||||
% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
% * unrestricted use provided that this legend is included on all tape
|
||||
% * media and as a part of the software program in whole or part. Users
|
||||
% * may copy or modify Sun RPC without charge, but are not authorized
|
||||
% * to license or distribute it to anyone else except as part of a product or
|
||||
% * program developed by the user or with the express written consent of
|
||||
% * Sun Microsystems, Inc.
|
||||
% *
|
||||
% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
% *
|
||||
% * Sun RPC is provided with no support and without any obligation on the
|
||||
% * part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
% * modification or enhancement.
|
||||
% *
|
||||
% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
% * OR ANY PART THEREOF.
|
||||
% *
|
||||
% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
% * or profits or other special, indirect and consequential damages, even if
|
||||
% * Sun has been advised of the possibility of such damages.
|
||||
% *
|
||||
% * Sun Microsystems, Inc.
|
||||
% * 2550 Garcia Avenue
|
||||
% * Mountain View, California 94043
|
||||
% */
|
||||
|
||||
/*
|
||||
* nis_callback.x
|
||||
*
|
||||
* Copyright (c) 1988-1992 Sun Microsystems Inc
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
/* From: %#pragma ident "@(#)nis_callback.x 1.7 94/05/03 SMI" */
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/nis_callback.x,v 1.3 1999/08/27 23:45:09 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* "@(#)zns_cback.x 1.2 90/09/10 Copyr 1990 Sun Micro"
|
||||
*
|
||||
* RPCL description of the Callback Service.
|
||||
*/
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%#include <rpcsvc/nis.h>
|
||||
#endif
|
||||
#ifdef RPC_XDR
|
||||
#ifdef SOLARIS
|
||||
%#include "nis_clnt.h"
|
||||
#else
|
||||
%#include "nis.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef nis_object *obj_p;
|
||||
|
||||
struct cback_data {
|
||||
obj_p entries<>; /* List of objects */
|
||||
};
|
||||
|
||||
program CB_PROG {
|
||||
version CB_VERS {
|
||||
bool CBPROC_RECEIVE(cback_data) = 1;
|
||||
void CBPROC_FINISH(void) = 2;
|
||||
void CBPROC_ERROR(nis_error) = 3;
|
||||
} = 1;
|
||||
} = 100302;
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*
|
||||
* $FreeBSD: src/include/rpcsvc/nis_db.h,v 1.5 1999/08/27 23:45:09 peter Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, by Sun Microsystems Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This header file defines the interface to the NIS database. All
|
||||
* implementations of the database must export at least these routines.
|
||||
* They must also follow the conventions set herein. See the implementors
|
||||
* guide for specific semantics that are required.
|
||||
*/
|
||||
|
||||
#ifndef _RPCSVC_NIS_DB_H
|
||||
#define _RPCSVC_NIS_DB_H
|
||||
|
||||
|
||||
/* From: #pragma ident "@(#)nis_db.h 1.8 94/05/03 SMI" */
|
||||
|
||||
/*
|
||||
* Note: although the version of <rpcsvc/nis_db.h> shipped with Solaris
|
||||
* 2.5/2.5.x is actually older than this one (according to the ident
|
||||
* string), it contains changes and a few added functions. Those changes
|
||||
* have been hand merged into this file to bring it up to date.
|
||||
*/
|
||||
|
||||
#include <rpc/rpc.h>
|
||||
#include <rpcsvc/nis.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum db_status {
|
||||
DB_SUCCESS = 0,
|
||||
DB_NOTFOUND = 1,
|
||||
DB_NOTUNIQUE = 2,
|
||||
DB_BADTABLE = 3,
|
||||
DB_BADQUERY = 4,
|
||||
DB_BADOBJECT = 5,
|
||||
DB_MEMORY_LIMIT = 6,
|
||||
DB_STORAGE_LIMIT = 7,
|
||||
DB_INTERNAL_ERROR = 8
|
||||
};
|
||||
typedef enum db_status db_status;
|
||||
|
||||
enum db_action {
|
||||
DB_LOOKUP = 0,
|
||||
DB_REMOVE = 1,
|
||||
DB_ADD = 2,
|
||||
DB_FIRST = 3,
|
||||
DB_NEXT = 4,
|
||||
DB_ALL = 5,
|
||||
DB_RESET_NEXT = 6
|
||||
};
|
||||
typedef enum db_action db_action;
|
||||
|
||||
typedef entry_obj *entry_object_p;
|
||||
|
||||
typedef struct {
|
||||
u_int db_next_desc_len;
|
||||
char *db_next_desc_val;
|
||||
} db_next_desc;
|
||||
|
||||
struct db_result {
|
||||
db_status status;
|
||||
db_next_desc nextinfo;
|
||||
struct {
|
||||
u_int objects_len;
|
||||
entry_object_p *objects_val;
|
||||
} objects;
|
||||
long ticks;
|
||||
};
|
||||
typedef struct db_result db_result;
|
||||
|
||||
/*
|
||||
* Prototypes for the database functions.
|
||||
*/
|
||||
|
||||
#if (__STDC__)
|
||||
|
||||
extern bool_t db_initialize(char *);
|
||||
#ifdef ORIGINAL_DECLS
|
||||
extern bool_t db_create_table(char *, table_obj *);
|
||||
extern bool_t db_destroy_table(char *);
|
||||
#else
|
||||
extern db_status db_create_table(char *, table_obj *);
|
||||
extern db_status db_destroy_table(char *);
|
||||
#endif
|
||||
extern db_result *db_first_entry(char *, int, nis_attr *);
|
||||
extern db_result *db_next_entry(char *, db_next_desc *);
|
||||
extern db_result *db_reset_next_entry(char *, db_next_desc *);
|
||||
extern db_result *db_list_entries(char *, int, nis_attr *);
|
||||
extern db_result *db_add_entry(char *, int, nis_attr *, entry_obj *);
|
||||
extern db_result *db_remove_entry(char *, int, nis_attr *);
|
||||
extern db_status db_checkpoint(char *);
|
||||
extern db_status db_standby(char *);
|
||||
#ifndef ORIGINAL_DECLS
|
||||
extern db_status db_table_exists(char *);
|
||||
extern db_status db_unload_table(char *);
|
||||
extern void db_free_result(db_result *);
|
||||
#endif
|
||||
|
||||
#else /* Non-prototype definitions */
|
||||
|
||||
extern bool_t db_initialize();
|
||||
#ifdef ORIGINAL_DECLS
|
||||
extern bool_t db_create_table();
|
||||
extern bool_t db_destroy_table();
|
||||
#else
|
||||
extern db_status db_create_table();
|
||||
extern db_status db_destroy_table();
|
||||
#endif
|
||||
extern db_result *db_first_entry();
|
||||
extern db_result *db_next_entry();
|
||||
extern db_result *db_reset_next_entry();
|
||||
extern db_result *db_list_entries();
|
||||
extern db_result *db_add_entry();
|
||||
extern db_result *db_remove_entry();
|
||||
extern db_status db_checkpoint();
|
||||
extern db_status db_standby();
|
||||
#ifndef ORIGINAL_DECLS
|
||||
extern db_status db_table_exists();
|
||||
extern db_status db_unload_table();
|
||||
extern void db_free_result();
|
||||
#endif
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _RPCSVC_NIS_DB_H */
|
||||
|
||||
@@ -0,0 +1,317 @@
|
||||
%/*
|
||||
% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
% * unrestricted use provided that this legend is included on all tape
|
||||
% * media and as a part of the software program in whole or part. Users
|
||||
% * may copy or modify Sun RPC without charge, but are not authorized
|
||||
% * to license or distribute it to anyone else except as part of a product or
|
||||
% * program developed by the user or with the express written consent of
|
||||
% * Sun Microsystems, Inc.
|
||||
% *
|
||||
% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
% *
|
||||
% * Sun RPC is provided with no support and without any obligation on the
|
||||
% * part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
% * modification or enhancement.
|
||||
% *
|
||||
% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
% * OR ANY PART THEREOF.
|
||||
% *
|
||||
% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
% * or profits or other special, indirect and consequential damages, even if
|
||||
% * Sun has been advised of the possibility of such damages.
|
||||
% *
|
||||
% * Sun Microsystems, Inc.
|
||||
% * 2550 Garcia Avenue
|
||||
% * Mountain View, California 94043
|
||||
% */
|
||||
|
||||
/*
|
||||
* nis_object.x
|
||||
*
|
||||
* Copyright (c) 1988-1992 Sun Microsystems Inc
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
/* From: %#pragma ident "@(#)nis_object.x 1.10 94/05/03 SMI" */
|
||||
|
||||
#if RPC_HDR
|
||||
%
|
||||
%#ifndef __nis_object_h
|
||||
%#define __nis_object_h
|
||||
%
|
||||
#endif
|
||||
/*
|
||||
* This file defines the format for a NIS object in RPC language.
|
||||
* It is included by the main .x file and the database access protocol
|
||||
* file. It is common because both of them need to deal with the same
|
||||
* type of object. Generating the actual code though is a bit messy because
|
||||
* the nis.x file and the nis_dba.x file will generate xdr routines to
|
||||
* encode/decode objects when only one set is needed. Such is life when
|
||||
* one is using rpcgen.
|
||||
*
|
||||
* Note, the protocol doesn't specify any limits on such things as
|
||||
* maximum name length, number of attributes, etc. These are enforced
|
||||
* by the database backend. When you hit them you will no. Also see
|
||||
* the db_getlimits() function for fetching the limit values.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Some manifest constants, chosen to maximize flexibility without
|
||||
* plugging the wire full of data.
|
||||
*/
|
||||
const NIS_MAXSTRINGLEN = 255;
|
||||
const NIS_MAXNAMELEN = 1024;
|
||||
const NIS_MAXATTRNAME = 32;
|
||||
const NIS_MAXATTRVAL = 2048;
|
||||
const NIS_MAXCOLUMNS = 64;
|
||||
const NIS_MAXATTR = 16;
|
||||
const NIS_MAXPATH = 1024;
|
||||
const NIS_MAXREPLICAS = 128;
|
||||
const NIS_MAXLINKS = 16;
|
||||
|
||||
const NIS_PK_NONE = 0; /* no public key (unix/sys auth) */
|
||||
const NIS_PK_DH = 1; /* Public key is Diffie-Hellman type */
|
||||
const NIS_PK_RSA = 2; /* Public key if RSA type */
|
||||
const NIS_PK_KERB = 3; /* Use kerberos style authentication */
|
||||
|
||||
/*
|
||||
* The fundamental name type of NIS. The name may consist of two parts,
|
||||
* the first being the fully qualified name, and the second being an
|
||||
* optional set of attribute/value pairs.
|
||||
*/
|
||||
struct nis_attr {
|
||||
string zattr_ndx<>; /* name of the index */
|
||||
opaque zattr_val<>; /* Value for the attribute. */
|
||||
};
|
||||
|
||||
typedef string nis_name<>; /* The NIS name itself. */
|
||||
|
||||
/* NIS object types are defined by the following enumeration. The numbers
|
||||
* they use are based on the following scheme :
|
||||
* 0 - 1023 are reserved for Sun,
|
||||
* 1024 - 2047 are defined to be private to a particular tree.
|
||||
* 2048 - 4095 are defined to be user defined.
|
||||
* 4096 - ... are reserved for future use.
|
||||
*/
|
||||
|
||||
enum zotypes {
|
||||
BOGUS_OBJ = 0, /* Uninitialized object structure */
|
||||
NO_OBJ = 1, /* NULL object (no data) */
|
||||
DIRECTORY_OBJ = 2, /* Directory object describing domain */
|
||||
GROUP_OBJ = 3, /* Group object (a list of names) */
|
||||
TABLE_OBJ = 4, /* Table object (a database schema) */
|
||||
ENTRY_OBJ = 5, /* Entry object (a database record) */
|
||||
LINK_OBJ = 6, /* A name link. */
|
||||
PRIVATE_OBJ = 7 /* Private object (all opaque data) */
|
||||
};
|
||||
|
||||
/*
|
||||
* The types of Name services NIS knows about. They are enumerated
|
||||
* here. The Binder code will use this type to determine if it has
|
||||
* a set of library routines that will access the indicated name service.
|
||||
*/
|
||||
enum nstype {
|
||||
UNKNOWN = 0,
|
||||
NIS = 1, /* Nis Plus Service */
|
||||
SUNYP = 2, /* Old NIS Service */
|
||||
IVY = 3, /* Nis Plus Plus Service */
|
||||
DNS = 4, /* Domain Name Service */
|
||||
X500 = 5, /* ISO/CCCIT X.500 Service */
|
||||
DNANS = 6, /* Digital DECNet Name Service */
|
||||
XCHS = 7, /* Xerox ClearingHouse Service */
|
||||
CDS= 8
|
||||
};
|
||||
|
||||
/*
|
||||
* DIRECTORY - The name service object. These objects identify other name
|
||||
* servers that are serving some portion of the name space. Each has a
|
||||
* type associated with it. The resolver library will note whether or not
|
||||
* is has the needed routines to access that type of service.
|
||||
* The oarmask structure defines an access rights mask on a per object
|
||||
* type basis for the name spaces. The only bits currently used are
|
||||
* create and destroy. By enabling or disabling these access rights for
|
||||
* a specific object type for a one of the accessor entities (owner,
|
||||
* group, world) the administrator can control what types of objects
|
||||
* may be freely added to the name space and which require the
|
||||
* administrator's approval.
|
||||
*/
|
||||
struct oar_mask {
|
||||
u_long oa_rights; /* Access rights mask */
|
||||
zotypes oa_otype; /* Object type */
|
||||
};
|
||||
|
||||
struct endpoint {
|
||||
string uaddr<>;
|
||||
string family<>; /* Transport family (INET, OSI, etc) */
|
||||
string proto<>; /* Protocol (TCP, UDP, CLNP, etc) */
|
||||
};
|
||||
|
||||
/*
|
||||
* Note: pkey is a netobj which is limited to 1024 bytes which limits the
|
||||
* keysize to 8192 bits. This is consider to be a reasonable limit for
|
||||
* the expected lifetime of this service.
|
||||
*/
|
||||
struct nis_server {
|
||||
nis_name name; /* Principal name of the server */
|
||||
endpoint ep<>; /* Universal addr(s) for server */
|
||||
u_long key_type; /* Public key type */
|
||||
netobj pkey; /* server's public key */
|
||||
};
|
||||
|
||||
struct directory_obj {
|
||||
nis_name do_name; /* Name of the directory being served */
|
||||
nstype do_type; /* one of NIS, DNS, IVY, YP, or X.500 */
|
||||
nis_server do_servers<>; /* <0> == Primary name server */
|
||||
u_long do_ttl; /* Time To Live (for caches) */
|
||||
oar_mask do_armask<>; /* Create/Destroy rights by object type */
|
||||
};
|
||||
|
||||
/*
|
||||
* ENTRY - This is one row of data from an information base.
|
||||
* The type value is used by the client library to convert the entry to
|
||||
* it's internal structure representation. The Table name is a back pointer
|
||||
* to the table where the entry is stored. This allows the client library
|
||||
* to determine where to send a request if the client wishes to change this
|
||||
* entry but got to it through a LINK rather than directly.
|
||||
* If the entry is a "standalone" entry then this field is void.
|
||||
*/
|
||||
const EN_BINARY = 1; /* Indicates value is binary data */
|
||||
const EN_CRYPT = 2; /* Indicates the value is encrypted */
|
||||
const EN_XDR = 4; /* Indicates the value is XDR encoded */
|
||||
const EN_MODIFIED = 8; /* Indicates entry is modified. */
|
||||
const EN_ASN1 = 64; /* Means contents use ASN.1 encoding */
|
||||
|
||||
struct entry_col {
|
||||
u_long ec_flags; /* Flags for this value */
|
||||
opaque ec_value<>; /* It's textual value */
|
||||
};
|
||||
|
||||
struct entry_obj {
|
||||
string en_type<>; /* Type of entry such as "passwd" */
|
||||
entry_col en_cols<>; /* Value for the entry */
|
||||
};
|
||||
|
||||
/*
|
||||
* GROUP - The group object contains a list of NIS principal names. Groups
|
||||
* are used to authorize principals. Each object has a set of access rights
|
||||
* for members of its group. Principal names in groups are in the form
|
||||
* name.directory and recursive groups are expressed as @groupname.directory
|
||||
*/
|
||||
struct group_obj {
|
||||
u_long gr_flags; /* Flags controlling group */
|
||||
nis_name gr_members<>; /* List of names in group */
|
||||
};
|
||||
|
||||
/*
|
||||
* LINK - This is the LINK object. It is quite similar to a symbolic link
|
||||
* in the UNIX filesystem. The attributes in the main object structure are
|
||||
* relative to the LINK data and not what it points to (like the file system)
|
||||
* "modify" privleges here indicate the right to modify what the link points
|
||||
* at and not to modify that actual object pointed to by the link.
|
||||
*/
|
||||
struct link_obj {
|
||||
zotypes li_rtype; /* Real type of the object */
|
||||
nis_attr li_attrs<>; /* Attribute/Values for tables */
|
||||
nis_name li_name; /* The object's real NIS name */
|
||||
};
|
||||
|
||||
/*
|
||||
* TABLE - This is the table object. It implements a simple
|
||||
* data base that applications and use for configuration or
|
||||
* administration purposes. The role of the table is to group together
|
||||
* a set of related entries. Tables are the simple database component
|
||||
* of NIS. Like many databases, tables are logically divided into columns
|
||||
* and rows. The columns are labeled with indexes and each ENTRY makes
|
||||
* up a row. Rows may be addressed within the table by selecting one
|
||||
* or more indexes, and values for those indexes. Each row which has
|
||||
* a value for the given index that matches the desired value is returned.
|
||||
* Within the definition of each column there is a flags variable, this
|
||||
* variable contains flags which determine whether or not the column is
|
||||
* searchable, contains binary data, and access rights for the entry objects
|
||||
* column value.
|
||||
*/
|
||||
|
||||
const TA_BINARY = 1; /* Means table data is binary */
|
||||
const TA_CRYPT = 2; /* Means value should be encrypted */
|
||||
const TA_XDR = 4; /* Means value is XDR encoded */
|
||||
const TA_SEARCHABLE = 8; /* Means this column is searchable */
|
||||
const TA_CASE = 16; /* Means this column is Case Sensitive */
|
||||
const TA_MODIFIED = 32; /* Means this columns attrs are modified*/
|
||||
const TA_ASN1 = 64; /* Means contents use ASN.1 encoding */
|
||||
|
||||
struct table_col {
|
||||
string tc_name<64>; /* Column Name */
|
||||
u_long tc_flags; /* control flags */
|
||||
u_long tc_rights; /* Access rights mask */
|
||||
};
|
||||
|
||||
struct table_obj {
|
||||
string ta_type<64>; /* Table type such as "passwd" */
|
||||
int ta_maxcol; /* Total number of columns */
|
||||
u_char ta_sep; /* Separator character */
|
||||
table_col ta_cols<>; /* The number of table indexes */
|
||||
string ta_path<>; /* A search path for this table */
|
||||
};
|
||||
|
||||
/*
|
||||
* This union joins together all of the currently known objects.
|
||||
*/
|
||||
union objdata switch (zotypes zo_type) {
|
||||
case DIRECTORY_OBJ :
|
||||
struct directory_obj di_data;
|
||||
case GROUP_OBJ :
|
||||
struct group_obj gr_data;
|
||||
case TABLE_OBJ :
|
||||
struct table_obj ta_data;
|
||||
case ENTRY_OBJ:
|
||||
struct entry_obj en_data;
|
||||
case LINK_OBJ :
|
||||
struct link_obj li_data;
|
||||
case PRIVATE_OBJ :
|
||||
opaque po_data<>;
|
||||
case NO_OBJ :
|
||||
void;
|
||||
case BOGUS_OBJ :
|
||||
void;
|
||||
default :
|
||||
void;
|
||||
};
|
||||
|
||||
/*
|
||||
* This is the basic NIS object data type. It consists of a generic part
|
||||
* which all objects contain, and a specialized part which varies depending
|
||||
* on the type of the object. All of the specialized sections have been
|
||||
* described above. You might have wondered why they all start with an
|
||||
* integer size, followed by the useful data. The answer is, when the
|
||||
* server doesn't recognize the type returned it treats it as opaque data.
|
||||
* And the definition for opaque data is {int size; char *data;}. In this
|
||||
* way, servers and utility routines that do not understand a given type
|
||||
* may still pass it around. One has to be careful in setting
|
||||
* this variable accurately, it must take into account such things as
|
||||
* XDR padding of structures etc. The best way to set it is to note one's
|
||||
* position in the XDR encoding stream, encode the structure, look at the
|
||||
* new position and calculate the size.
|
||||
*/
|
||||
struct nis_oid {
|
||||
u_long ctime; /* Time of objects creation */
|
||||
u_long mtime; /* Time of objects modification */
|
||||
};
|
||||
|
||||
struct nis_object {
|
||||
nis_oid zo_oid; /* object identity verifier. */
|
||||
nis_name zo_name; /* The NIS name for this object */
|
||||
nis_name zo_owner; /* NIS name of object owner. */
|
||||
nis_name zo_group; /* NIS name of access group. */
|
||||
nis_name zo_domain; /* The administrator for the object */
|
||||
u_long zo_access; /* Access rights (owner, group, world) */
|
||||
u_long zo_ttl; /* Object's time to live in seconds. */
|
||||
objdata zo_data; /* Data structure for this type */
|
||||
};
|
||||
#if RPC_HDR
|
||||
%
|
||||
%#endif /* if __nis_object_h */
|
||||
%
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, Sun Microsystems Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* nis_tags.h
|
||||
*
|
||||
* This file contains the tags and statistics definitions. It is
|
||||
* automatically included by nis.h
|
||||
*/
|
||||
|
||||
#ifndef _RPCSVC_NIS_TAGS_H
|
||||
#define _RPCSVC_NIS_TAGS_H
|
||||
|
||||
/* From: #pragma ident "@(#)nis_tags.h 1.10 94/05/03 SMI" */
|
||||
/* from file: zns_tags.h 1.7 Copyright (c) 1990 Sun Microsystems */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef ORIGINAL_DECLS
|
||||
#define NIS_DIR "data"
|
||||
#endif
|
||||
|
||||
/* Lookup and List function flags */
|
||||
#define FOLLOW_LINKS (1<<0) /* Follow link objects */
|
||||
#define FOLLOW_PATH (1<<1) /* Follow the path in a table */
|
||||
#define HARD_LOOKUP (1<<2) /* Block until successful */
|
||||
#define ALL_RESULTS (1<<3) /* Retrieve all results */
|
||||
#define NO_CACHE (1<<4) /* Do not return 'cached' results */
|
||||
#define MASTER_ONLY (1<<5) /* Get value only from master server */
|
||||
#define EXPAND_NAME (1<<6) /* Expand partitially qualified names */
|
||||
|
||||
/* Semantic modification for table operations flags */
|
||||
#define RETURN_RESULT (1<<7) /* Return resulting object to client */
|
||||
#define ADD_OVERWRITE (1<<8) /* Allow overwrites on ADD */
|
||||
#define REM_MULTIPLE (1<<9) /* Allow wildcard deletes */
|
||||
#define MOD_SAMEOBJ (1<<10) /* Check modified object before write */
|
||||
#define ADD_RESERVED (1<<11) /* Spare ADD semantic */
|
||||
#define REM_RESERVED (1<<12) /* Spare REM semantic */
|
||||
#ifdef ORIGINAL_DECLS
|
||||
#define MOD_RESERVED (1<<13) /* Spare MOD semantic */
|
||||
#else
|
||||
#define MOD_EXCLUSIVE (1<<13) /* Modify no overwrite on modified keys */
|
||||
#endif
|
||||
|
||||
/* Transport specific modifications to the operation */
|
||||
#define USE_DGRAM (1<<16) /* Use a datagram transport */
|
||||
#define NO_AUTHINFO (1<<17) /* Don't bother attaching auth info */
|
||||
|
||||
/*
|
||||
* Declarations for "standard" NIS+ tags
|
||||
* State variable tags have values 0 - 2047
|
||||
* Statistic tags have values 2048 - 65535
|
||||
* User Tags have values >2^16
|
||||
*/
|
||||
#define TAG_DEBUG 1 /* set debug level */
|
||||
#define TAG_STATS 2 /* Enable/disable statistics */
|
||||
#define TAG_GCACHE 3 /* Flush the Group Cache */
|
||||
#ifndef ORIGINAL_DECLS
|
||||
#define TAG_GCACHE_ALL TAG_GCACHE
|
||||
#endif
|
||||
#define TAG_DCACHE 4 /* Flush the directory cache */
|
||||
#ifndef ORIGINAL_DECLS
|
||||
#define TAG_DCACHE_ONE TAG_DCACHE
|
||||
#endif
|
||||
#define TAG_OCACHE 5 /* Flush the Object Cache */
|
||||
#define TAG_SECURE 6 /* Set the security level */
|
||||
#ifndef ORIGINAL_DECLS
|
||||
#define TAG_TCACHE_ONE 7 /* Flush the table cache */
|
||||
#define TAG_DCACHE_ALL 8 /* Flush entire directory cache */
|
||||
#define TAG_TCACHE_ALL 9 /* Flush entire table cache */
|
||||
#define TAG_GCACHE_ONE 10 /* Flush one group object */
|
||||
#define TAG_DCACHE_ONE_REFRESH 11 /* Flush and refresh one DO */
|
||||
#endif
|
||||
|
||||
#define TAG_OPSTATS 2048 /* NIS+ operations statistics */
|
||||
#define TAG_THREADS 2049 /* Child process/thread status */
|
||||
#define TAG_HEAP 2050 /* Heap usage statistics */
|
||||
#define TAG_UPDATES 2051 /* Updates to this service */
|
||||
#define TAG_VISIBLE 2052 /* First update that isn't replicated */
|
||||
#define TAG_S_DCACHE 2053 /* Directory cache statistics */
|
||||
#define TAG_S_OCACHE 2054 /* Object cache statistics */
|
||||
#define TAG_S_GCACHE 2055 /* Group cache statistics */
|
||||
#define TAG_S_STORAGE 2056 /* Group cache statistics */
|
||||
#define TAG_UPTIME 2057 /* Time that server has been up */
|
||||
#ifndef ORIGINAL_DECLS
|
||||
#define TAG_DIRLIST 2058 /* Dir served by this server */
|
||||
#define TAG_NISCOMPAT 2059 /* Whether supports NIS compat mode */
|
||||
#define TAG_DNSFORWARDING 2060 /* Whether DNS forwarding supported*/
|
||||
#define TAG_SECURITY_LEVEL 2061 /* Security level of the server */
|
||||
#define TAG_ROOTSERVER 2062 /* Whether root server */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Declarations for the Group object flags. Currently
|
||||
* there are only 3.
|
||||
*/
|
||||
#define IMPMEM_GROUPS 1 /* Implicit Membership allowed */
|
||||
#define RECURS_GROUPS 2 /* Recursive Groups allowed */
|
||||
#define NEGMEM_GROUPS 4 /* Negative Groups allowed */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _RPCSVC_NIS_TAGS_H */
|
||||
|
||||
@@ -0,0 +1,317 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, Sun Microsystems Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains the interfaces that are visible in the SunOS 5.x
|
||||
* implementation of NIS Plus. When using C++ the defined __cplusplus and
|
||||
* __STDC__ should both be true.
|
||||
*/
|
||||
|
||||
#ifndef _RPCSVC_NISLIB_H
|
||||
#define _RPCSVC_NISLIB_H
|
||||
|
||||
/* From: #pragma ident "@(#)nislib.h 1.16 94/05/03 SMI" */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct signature {
|
||||
int signature_len;
|
||||
char *signature_val;
|
||||
};
|
||||
|
||||
#ifdef __STDC__
|
||||
extern void nis_freeresult(nis_result *);
|
||||
extern nis_result * nis_lookup(nis_name, u_long);
|
||||
extern nis_result * nis_list(nis_name, u_long,
|
||||
int (*)(nis_name, nis_object *, void *), void *);
|
||||
extern nis_result * nis_add(nis_name, nis_object *);
|
||||
extern nis_result * nis_remove(nis_name, nis_object *);
|
||||
extern nis_result * nis_modify(nis_name, nis_object *);
|
||||
|
||||
extern nis_result * nis_add_entry(nis_name, nis_object *, u_long);
|
||||
extern nis_result * nis_remove_entry(nis_name, nis_object *, u_long);
|
||||
extern nis_result * nis_modify_entry(nis_name, nis_object *, u_long);
|
||||
extern nis_result * nis_first_entry(nis_name);
|
||||
extern nis_result * nis_next_entry(nis_name, netobj *);
|
||||
|
||||
extern nis_error nis_mkdir(nis_name, nis_server *);
|
||||
extern nis_error nis_rmdir(nis_name, nis_server *);
|
||||
extern name_pos nis_dir_cmp(nis_name, nis_name);
|
||||
|
||||
extern nis_name * nis_getnames(nis_name);
|
||||
extern void nis_freenames(nis_name *);
|
||||
extern nis_name nis_domain_of(nis_name);
|
||||
extern nis_name nis_leaf_of(nis_name);
|
||||
extern nis_name nis_leaf_of_r(const nis_name, char *, size_t);
|
||||
extern nis_name nis_name_of(nis_name);
|
||||
extern nis_name nis_local_group(void);
|
||||
extern nis_name nis_local_directory(void);
|
||||
extern nis_name nis_local_principal(void);
|
||||
extern nis_name nis_local_host(void);
|
||||
|
||||
extern void nis_destroy_object(nis_object *);
|
||||
extern nis_object * nis_clone_object(nis_object *, nis_object *);
|
||||
extern void nis_print_object(nis_object *);
|
||||
|
||||
extern char * nis_sperrno(nis_error);
|
||||
extern void nis_perror(nis_error, char *);
|
||||
extern char * nis_sperror(nis_error, char *);
|
||||
extern void nis_lerror(nis_error, char *);
|
||||
|
||||
extern void nis_print_group_entry(nis_name);
|
||||
extern bool_t nis_ismember(nis_name, nis_name);
|
||||
extern nis_error nis_creategroup(nis_name, u_long);
|
||||
extern nis_error nis_destroygroup(nis_name);
|
||||
extern nis_error nis_addmember(nis_name, nis_name);
|
||||
extern nis_error nis_removemember(nis_name, nis_name);
|
||||
extern nis_error nis_verifygroup(nis_name);
|
||||
|
||||
extern void nis_freeservlist(nis_server **);
|
||||
extern nis_server ** nis_getservlist(nis_name);
|
||||
extern nis_error nis_stats(nis_server *, nis_tag *, int, nis_tag **);
|
||||
extern nis_error nis_servstate(nis_server *, nis_tag *, int, nis_tag **);
|
||||
extern void nis_freetags(nis_tag *, int);
|
||||
|
||||
extern nis_result * nis_checkpoint(nis_name);
|
||||
extern void nis_ping(nis_name, u_long, nis_object *);
|
||||
|
||||
/*
|
||||
* XXX: PLEASE NOTE THAT THE FOLLOWING FUNCTIONS ARE INTERNAL
|
||||
* TO NIS+ AND SHOULD NOT BE USED BY ANY APPLICATION PROGRAM.
|
||||
* THEIR SEMANTICS AND/OR SIGNATURE CAN CHANGE WITHOUT NOTICE.
|
||||
* SO, PLEASE DO NOT USE THEM. YOU ARE WARNED!!!!
|
||||
*/
|
||||
|
||||
extern char ** __break_name(nis_name, int *);
|
||||
extern int __name_distance(char **, char **);
|
||||
extern nis_result * nis_make_error(nis_error, u_long, u_long, u_long, u_long);
|
||||
extern nis_attr * __cvt2attr(int *, char **);
|
||||
extern void nis_free_request(ib_request *);
|
||||
extern nis_error nis_get_request(nis_name, nis_object *, netobj*, ib_request*);
|
||||
extern nis_object * nis_read_obj(char *);
|
||||
extern int nis_write_obj(char *, nis_object *);
|
||||
extern int nis_in_table(nis_name, NIS_HASH_TABLE *, int *);
|
||||
extern int nis_insert_item(NIS_HASH_ITEM *, NIS_HASH_TABLE *);
|
||||
extern NIS_HASH_ITEM * nis_find_item(nis_name, NIS_HASH_TABLE *);
|
||||
extern NIS_HASH_ITEM * nis_remove_item(nis_name, NIS_HASH_TABLE *);
|
||||
extern void nis_insert_name(nis_name, NIS_HASH_TABLE *);
|
||||
extern void nis_remove_name(nis_name, NIS_HASH_TABLE *);
|
||||
extern CLIENT * nis_make_rpchandle(nis_server *, int, u_long, u_long, u_long,
|
||||
int, int);
|
||||
extern void * nis_get_static_storage(struct nis_sdata *, u_long, u_long);
|
||||
extern char * nis_data(char *);
|
||||
extern void nis_print_rights(u_long);
|
||||
extern void nis_print_directory(directory_obj *);
|
||||
extern void nis_print_group(group_obj *);
|
||||
extern void nis_print_table(table_obj *);
|
||||
extern void nis_print_link(link_obj *);
|
||||
extern void nis_print_entry(entry_obj *);
|
||||
extern nis_object * nis_get_object(char *, char *, char *, u_long, u_long,
|
||||
zotypes);
|
||||
extern nis_server * __nis_init_callback(CLIENT *,
|
||||
int (*)(nis_name, nis_object *, void *), void *);
|
||||
extern int nis_getdtblsize(void);
|
||||
extern int __nis_run_callback(netobj *, u_long, struct timeval *, CLIENT *);
|
||||
|
||||
extern log_result *nis_dumplog(nis_server *, nis_name, u_long);
|
||||
extern log_result *nis_dump(nis_server *, nis_name,
|
||||
int (*)(nis_name, nis_object *, void *));
|
||||
|
||||
extern bool_t __do_ismember(nis_name, nis_name,
|
||||
nis_result *(*)(nis_name, u_long));
|
||||
extern nis_name __nis_map_group(nis_name);
|
||||
extern nis_name __nis_map_group_r(nis_name, char*, size_t);
|
||||
|
||||
extern nis_error __nis_CacheBind(char *, directory_obj *);
|
||||
extern nis_error __nis_CacheSearch(char *, directory_obj *);
|
||||
extern bool_t __nis_CacheRemoveEntry(directory_obj *);
|
||||
extern void __nis_CacheRestart(void);
|
||||
extern void __nis_CachePrint(void);
|
||||
extern void __nis_CacheDumpStatistics(void);
|
||||
extern bool_t writeColdStartFile(directory_obj *);
|
||||
|
||||
extern CLIENT * __get_ti_clnt(char *, CLIENT *, char **, pid_t *);
|
||||
extern int __strcmp_case_insens(char *, char *);
|
||||
extern int __strncmp_case_insens(char *, char *);
|
||||
|
||||
extern fd_result * nis_finddirectory(directory_obj *, nis_name);
|
||||
extern int __start_clock(int);
|
||||
extern u_long __stop_clock(int);
|
||||
|
||||
/*
|
||||
* This particular function is part of the FreeBSD NIS+ implementation
|
||||
* only. Ideally it should be somewhere else, but it is used by both
|
||||
* rpc.nisd and nis_cachemgr, and there aren't that many headers common
|
||||
* to both programs.
|
||||
*/
|
||||
|
||||
extern struct signature *__nis_calculate_encrypted_cksum(unsigned char *, unsigned int, char *, int);
|
||||
|
||||
#else
|
||||
|
||||
/* Non-prototype definitions (old fashioned C) */
|
||||
|
||||
extern void nis_freeresult();
|
||||
extern nis_result * nis_lookup();
|
||||
extern nis_result * nis_list();
|
||||
extern nis_result * nis_add();
|
||||
extern nis_result * nis_remove();
|
||||
extern nis_result * nis_modify();
|
||||
|
||||
extern nis_result * nis_add_entry();
|
||||
extern nis_result * nis_remove_entry();
|
||||
extern nis_result * nis_modify_entry();
|
||||
extern nis_result * nis_first_entry();
|
||||
extern nis_result * nis_next_entry();
|
||||
|
||||
extern nis_error nis_mkdir();
|
||||
extern nis_error nis_rmdir();
|
||||
extern name_pos nis_dir_cmp();
|
||||
|
||||
extern nis_name *nis_getnames();
|
||||
extern void nis_freenames();
|
||||
extern nis_name nis_domain_of();
|
||||
extern nis_name nis_leaf_of();
|
||||
extern nis_name nis_leaf_of_r();
|
||||
extern nis_name nis_name_of();
|
||||
extern nis_name nis_local_group();
|
||||
extern nis_name nis_local_directory();
|
||||
extern nis_name nis_local_principal();
|
||||
extern nis_name nis_local_host();
|
||||
|
||||
extern void nis_destroy_object();
|
||||
extern nis_object * nis_clone_object();
|
||||
extern void nis_print_object();
|
||||
|
||||
extern char * nis_sperrno();
|
||||
extern void nis_perror();
|
||||
extern char * nis_sperror();
|
||||
extern void nis_lerror();
|
||||
|
||||
extern void nis_print_group_entry();
|
||||
extern bool_t nis_ismember();
|
||||
extern nis_error nis_creategroup();
|
||||
extern nis_error nis_destroygroup();
|
||||
extern nis_error nis_addmember();
|
||||
extern nis_error nis_removemember();
|
||||
extern nis_error nis_verifygroup();
|
||||
|
||||
extern void nis_freeservlist();
|
||||
extern nis_server ** nis_getservlist();
|
||||
extern nis_error nis_stats();
|
||||
extern nis_error nis_servstate();
|
||||
extern void nis_freetags();
|
||||
|
||||
extern nis_result * nis_checkpoint();
|
||||
extern void nis_ping();
|
||||
|
||||
/*
|
||||
* XXX: PLEASE NOTE THAT THE FOLLOWING FUNCTIONS ARE INTERNAL
|
||||
* TO NIS+ AND SHOULD NOT BE USED BY ANY APPLICATION PROGRAM.
|
||||
* THEIR SEMANTICS AND/OR SIGNATURE CAN CHANGE WITHOUT NOTICE.
|
||||
* SO, PLEASE DO NOT USE THEM. YOU ARE WARNED!!!!
|
||||
*/
|
||||
extern char ** __break_name();
|
||||
extern int __name_distance();
|
||||
extern nis_result * nis_make_error();
|
||||
extern nis_attr * __cvt2attr();
|
||||
extern void nis_free_request();
|
||||
extern nis_error nis_get_request();
|
||||
extern nis_object * nis_read_obj();
|
||||
extern int nis_write_obj();
|
||||
extern int nis_in_table();
|
||||
extern int nis_insert_item();
|
||||
extern NIS_HASH_ITEM * nis_find_item();
|
||||
extern NIS_HASH_ITEM * nis_remove_item();
|
||||
extern void nis_insert_name();
|
||||
extern void nis_remove_name();
|
||||
extern CLIENT * nis_make_rpchandle();
|
||||
extern void * nis_get_static_storage();
|
||||
extern char * nis_data();
|
||||
|
||||
extern void nis_print_rights();
|
||||
extern void nis_print_directory();
|
||||
extern void nis_print_group();
|
||||
extern void nis_print_table();
|
||||
extern void nis_print_link();
|
||||
extern void nis_print_entry();
|
||||
extern nis_object * nis_get_object();
|
||||
|
||||
extern nis_server * __nis_init_callback();
|
||||
extern int nis_getdtblsize();
|
||||
extern int __nis_run_callback();
|
||||
|
||||
extern log_result * nis_dump();
|
||||
extern log_result * nis_dumplog();
|
||||
|
||||
extern bool_t __do_ismember();
|
||||
extern nis_name __nis_map_group();
|
||||
extern nis_name __nis_map_group_r();
|
||||
|
||||
|
||||
extern nis_error __nis_CacheBind();
|
||||
extern directory_obj * __nis_CacheSearch();
|
||||
extern bool_t __nis_CacheRemoveEntry();
|
||||
extern void __nis_CacheRestart();
|
||||
extern void __nis_CachePrint();
|
||||
extern void __nis_CacheDumpStatistics();
|
||||
extern bool_t writeColdStartFile();
|
||||
|
||||
extern CLIENT * __get_ti_clnt();
|
||||
extern int __strcmp_case_insens();
|
||||
extern int __strncmp_case_insens();
|
||||
|
||||
extern fd_result * nis_finddirectory();
|
||||
extern int __start_clock();
|
||||
extern u_long __stop_clock();
|
||||
|
||||
/*
|
||||
* This particular function is part of the FreeBSD NIS+ implementation
|
||||
* only. Ideally it should be somewhere else, but it is used by both
|
||||
* rpc.nisd and nis_cachemgr, and there aren't that many headers common
|
||||
* to both programs.
|
||||
*/
|
||||
|
||||
extern struct signature *__nis_calculate_encrypted_cksum();
|
||||
|
||||
#endif
|
||||
|
||||
#define NUL '\0'
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _RPCSVC_NISLIB_H */
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
/* @(#)nlm_prot.x 2.1 88/08/01 4.0 RPCSRC */
|
||||
/* @(#)nlm_prot.x 1.8 87/09/21 Copyr 1987 Sun Micro */
|
||||
|
||||
/*
|
||||
* Network lock manager protocol definition
|
||||
* Copyright (C) 1986 Sun Microsystems, Inc.
|
||||
*
|
||||
* protocol used between local lock manager and remote lock manager
|
||||
*/
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%#define LM_MAXSTRLEN 1024
|
||||
%#define MAXNAMELEN LM_MAXSTRLEN+1
|
||||
#else
|
||||
%#ifndef lint
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/nlm_prot.x,v 1.8 1999/08/27 23:45:10 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* status of a call to the lock manager
|
||||
*/
|
||||
enum nlm_stats {
|
||||
nlm_granted = 0,
|
||||
nlm_denied = 1,
|
||||
nlm_denied_nolocks = 2,
|
||||
nlm_blocked = 3,
|
||||
nlm_denied_grace_period = 4
|
||||
};
|
||||
|
||||
struct nlm_holder {
|
||||
bool exclusive;
|
||||
int svid;
|
||||
netobj oh;
|
||||
unsigned l_offset;
|
||||
unsigned l_len;
|
||||
};
|
||||
|
||||
union nlm_testrply switch (nlm_stats stat) {
|
||||
case nlm_denied:
|
||||
struct nlm_holder holder;
|
||||
default:
|
||||
void;
|
||||
};
|
||||
|
||||
struct nlm_stat {
|
||||
nlm_stats stat;
|
||||
};
|
||||
|
||||
struct nlm_res {
|
||||
netobj cookie;
|
||||
nlm_stat stat;
|
||||
};
|
||||
|
||||
struct nlm_testres {
|
||||
netobj cookie;
|
||||
nlm_testrply stat;
|
||||
};
|
||||
|
||||
struct nlm_lock {
|
||||
string caller_name<LM_MAXSTRLEN>;
|
||||
netobj fh; /* identify a file */
|
||||
netobj oh; /* identify owner of a lock */
|
||||
int svid; /* generated from pid for svid */
|
||||
unsigned l_offset;
|
||||
unsigned l_len;
|
||||
};
|
||||
|
||||
struct nlm_lockargs {
|
||||
netobj cookie;
|
||||
bool block;
|
||||
bool exclusive;
|
||||
struct nlm_lock alock;
|
||||
bool reclaim; /* used for recovering locks */
|
||||
int state; /* specify local status monitor state */
|
||||
};
|
||||
|
||||
struct nlm_cancargs {
|
||||
netobj cookie;
|
||||
bool block;
|
||||
bool exclusive;
|
||||
struct nlm_lock alock;
|
||||
};
|
||||
|
||||
struct nlm_testargs {
|
||||
netobj cookie;
|
||||
bool exclusive;
|
||||
struct nlm_lock alock;
|
||||
};
|
||||
|
||||
struct nlm_unlockargs {
|
||||
netobj cookie;
|
||||
struct nlm_lock alock;
|
||||
};
|
||||
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%/*
|
||||
% * The following enums are actually bit encoded for efficient
|
||||
% * boolean algebra.... DON'T change them.....
|
||||
% */
|
||||
#endif
|
||||
enum fsh_mode {
|
||||
fsm_DN = 0, /* deny none */
|
||||
fsm_DR = 1, /* deny read */
|
||||
fsm_DW = 2, /* deny write */
|
||||
fsm_DRW = 3 /* deny read/write */
|
||||
};
|
||||
|
||||
enum fsh_access {
|
||||
fsa_NONE = 0, /* for completeness */
|
||||
fsa_R = 1, /* read only */
|
||||
fsa_W = 2, /* write only */
|
||||
fsa_RW = 3 /* read/write */
|
||||
};
|
||||
|
||||
struct nlm_share {
|
||||
string caller_name<LM_MAXSTRLEN>;
|
||||
netobj fh;
|
||||
netobj oh;
|
||||
fsh_mode mode;
|
||||
fsh_access access;
|
||||
};
|
||||
|
||||
struct nlm_shareargs {
|
||||
netobj cookie;
|
||||
nlm_share share;
|
||||
bool reclaim;
|
||||
};
|
||||
|
||||
struct nlm_shareres {
|
||||
netobj cookie;
|
||||
nlm_stats stat;
|
||||
int sequence;
|
||||
};
|
||||
|
||||
struct nlm_notify {
|
||||
string name<MAXNAMELEN>;
|
||||
long state;
|
||||
};
|
||||
|
||||
/*
|
||||
* Over-the-wire protocol used between the network lock managers
|
||||
*/
|
||||
|
||||
program NLM_PROG {
|
||||
version NLM_VERS {
|
||||
|
||||
nlm_testres NLM_TEST(struct nlm_testargs) = 1;
|
||||
|
||||
nlm_res NLM_LOCK(struct nlm_lockargs) = 2;
|
||||
|
||||
nlm_res NLM_CANCEL(struct nlm_cancargs) = 3;
|
||||
nlm_res NLM_UNLOCK(struct nlm_unlockargs) = 4;
|
||||
|
||||
/*
|
||||
* remote lock manager call-back to grant lock
|
||||
*/
|
||||
nlm_res NLM_GRANTED(struct nlm_testargs)= 5;
|
||||
/*
|
||||
* message passing style of requesting lock
|
||||
*/
|
||||
void NLM_TEST_MSG(struct nlm_testargs) = 6;
|
||||
void NLM_LOCK_MSG(struct nlm_lockargs) = 7;
|
||||
void NLM_CANCEL_MSG(struct nlm_cancargs) =8;
|
||||
void NLM_UNLOCK_MSG(struct nlm_unlockargs) = 9;
|
||||
void NLM_GRANTED_MSG(struct nlm_testargs) = 10;
|
||||
void NLM_TEST_RES(nlm_testres) = 11;
|
||||
void NLM_LOCK_RES(nlm_res) = 12;
|
||||
void NLM_CANCEL_RES(nlm_res) = 13;
|
||||
void NLM_UNLOCK_RES(nlm_res) = 14;
|
||||
void NLM_GRANTED_RES(nlm_res) = 15;
|
||||
} = 1;
|
||||
|
||||
version NLM_VERSX {
|
||||
nlm_shareres NLM_SHARE(nlm_shareargs) = 20;
|
||||
nlm_shareres NLM_UNSHARE(nlm_shareargs) = 21;
|
||||
nlm_res NLM_NM_LOCK(nlm_lockargs) = 22;
|
||||
void NLM_FREE_ALL(nlm_notify) = 23;
|
||||
} = 3;
|
||||
|
||||
} = 100021;
|
||||
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
%/*
|
||||
% * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
% * unrestricted use provided that this legend is included on all tape
|
||||
% * media and as a part of the software program in whole or part. Users
|
||||
% * may copy or modify Sun RPC without charge, but are not authorized
|
||||
% * to license or distribute it to anyone else except as part of a product or
|
||||
% * program developed by the user.
|
||||
% *
|
||||
% * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
% * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
% * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
% *
|
||||
% * Sun RPC is provided with no support and without any obligation on the
|
||||
% * part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
% * modification or enhancement.
|
||||
% *
|
||||
% * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
% * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
% * OR ANY PART THEREOF.
|
||||
% *
|
||||
% * In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
% * or profits or other special, indirect and consequential damages, even if
|
||||
% * Sun has been advised of the possibility of such damages.
|
||||
% *
|
||||
% * Sun Microsystems, Inc.
|
||||
% * 2550 Garcia Avenue
|
||||
% * Mountain View, California 94043
|
||||
% */
|
||||
%/*
|
||||
% * Copyright (c) 1984,1989 by Sun Microsystems, Inc.
|
||||
% */
|
||||
|
||||
%/* from pmap_prot.x */
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%
|
||||
%#pragma ident "@(#)pmap_prot.x 1.6 94/04/29 SMI"
|
||||
%
|
||||
%#ifndef _KERNEL
|
||||
%
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Port Mapper Protocol Specification (in RPC Language)
|
||||
* derived from RFC 1057
|
||||
*/
|
||||
|
||||
%/*
|
||||
% * Protocol for the local binder service, or pmap.
|
||||
% *
|
||||
% * Copyright (C) 1984, Sun Microsystems, Inc.
|
||||
% *
|
||||
% * The following procedures are supported by the protocol:
|
||||
% *
|
||||
% * PMAPPROC_NULL() returns ()
|
||||
% * takes nothing, returns nothing
|
||||
% *
|
||||
% * PMAPPROC_SET(struct pmap) returns (bool_t)
|
||||
% * TRUE is success, FALSE is failure. Registers the tuple
|
||||
% * [prog, vers, prot, port].
|
||||
% *
|
||||
% * PMAPPROC_UNSET(struct pmap) returns (bool_t)
|
||||
% * TRUE is success, FALSE is failure. Un-registers pair
|
||||
% * [prog, vers]. prot and port are ignored.
|
||||
% *
|
||||
% * PMAPPROC_GETPORT(struct pmap) returns (long unsigned).
|
||||
% * 0 is failure. Otherwise returns the port number where the pair
|
||||
% * [prog, vers] is registered. It may lie!
|
||||
% *
|
||||
% * PMAPPROC_DUMP() RETURNS (struct pmaplist_ptr)
|
||||
% *
|
||||
% * PMAPPROC_CALLIT(unsigned, unsigned, unsigned, string<>)
|
||||
% * RETURNS (port, string<>);
|
||||
% * usage: encapsulatedresults = PMAPPROC_CALLIT(prog, vers, proc,
|
||||
% * encapsulatedargs);
|
||||
% * Calls the procedure on the local machine. If it is not registered,
|
||||
% * this procedure is quite; ie it does not return error information!!!
|
||||
% * This procedure only is supported on rpc/udp and calls via
|
||||
% * rpc/udp. This routine only passes null authentication parameters.
|
||||
% * This file has no interface to xdr routines for PMAPPROC_CALLIT.
|
||||
% *
|
||||
% * The service supports remote procedure calls on udp/ip or tcp/ip socket 111.
|
||||
% */
|
||||
%
|
||||
const PMAPPORT = 111; /* portmapper port number */
|
||||
%
|
||||
%
|
||||
%/*
|
||||
% * A mapping of (program, version, protocol) to port number
|
||||
% */
|
||||
|
||||
struct pmap {
|
||||
unsigned long pm_prog;
|
||||
unsigned long pm_vers;
|
||||
unsigned long pm_prot;
|
||||
unsigned long pm_port;
|
||||
};
|
||||
#ifdef RPC_HDR
|
||||
%
|
||||
%typedef pmap PMAP;
|
||||
%
|
||||
#endif
|
||||
%
|
||||
%/*
|
||||
% * Supported values for the "prot" field
|
||||
% */
|
||||
%
|
||||
const PMAP_IPPROTO_TCP = 6; /* protocol number for TCP/IP */
|
||||
const PMAP_IPPROTO_UDP = 17; /* protocol number for UDP/IP */
|
||||
%
|
||||
%
|
||||
%/*
|
||||
% * A list of mappings
|
||||
% *
|
||||
% * Below are two definitions for the pmaplist structure. This is done because
|
||||
% * xdr_pmaplist() is specified to take a struct pmaplist **, rather than a
|
||||
% * struct pmaplist * that rpcgen would produce. One version of the pmaplist
|
||||
% * structure (actually called pm__list) is used with rpcgen, and the other is
|
||||
% * defined only in the header file for compatibility with the specified
|
||||
% * interface.
|
||||
% */
|
||||
|
||||
struct pm__list {
|
||||
pmap pml_map;
|
||||
struct pm__list *pml_next;
|
||||
};
|
||||
|
||||
typedef pm__list *pmaplist_ptr; /* results of PMAPPROC_DUMP */
|
||||
|
||||
#ifdef RPC_HDR
|
||||
%
|
||||
%typedef struct pm__list pmaplist;
|
||||
%typedef struct pm__list PMAPLIST;
|
||||
%
|
||||
%#ifndef __cplusplus
|
||||
%struct pmaplist {
|
||||
% PMAP pml_map;
|
||||
% struct pmaplist *pml_next;
|
||||
%};
|
||||
%#endif
|
||||
%
|
||||
%#ifdef __cplusplus
|
||||
%extern "C" {
|
||||
%#endif
|
||||
%#ifdef __STDC__
|
||||
%extern bool_t xdr_pmaplist(XDR *, pmaplist**);
|
||||
%#else /* K&R C */
|
||||
%bool_t xdr_pmaplist();
|
||||
%#endif
|
||||
%#ifdef __cplusplus
|
||||
%}
|
||||
%#endif
|
||||
%
|
||||
#endif
|
||||
|
||||
%
|
||||
%/*
|
||||
% * Arguments to callit
|
||||
% */
|
||||
|
||||
struct rmtcallargs {
|
||||
unsigned long prog;
|
||||
unsigned long vers;
|
||||
unsigned long proc;
|
||||
opaque args<>;
|
||||
};
|
||||
#ifdef RPC_HDR
|
||||
%
|
||||
%/*
|
||||
% * Client-side only representation of rmtcallargs structure.
|
||||
% *
|
||||
% * The routine that XDRs the rmtcallargs structure must deal with the
|
||||
% * opaque arguments in the "args" structure. xdr_rmtcall_args() needs to be
|
||||
% * passed the XDR routine that knows the args' structure. This routine
|
||||
% * doesn't need to go over-the-wire (and it wouldn't make sense anyway) since
|
||||
% * the application being called knows the args structure already. So we use a
|
||||
% * different "XDR" structure on the client side, p_rmtcallargs, which includes
|
||||
% * the args' XDR routine.
|
||||
% */
|
||||
%struct p_rmtcallargs {
|
||||
% u_long prog;
|
||||
% u_long vers;
|
||||
% u_long proc;
|
||||
% struct {
|
||||
% u_int args_len;
|
||||
% char *args_val;
|
||||
% } args;
|
||||
% xdrproc_t xdr_args; /* encodes args */
|
||||
%};
|
||||
%
|
||||
#endif /* def RPC_HDR */
|
||||
%
|
||||
%
|
||||
%/*
|
||||
% * Results of callit
|
||||
% */
|
||||
|
||||
struct rmtcallres {
|
||||
unsigned long port;
|
||||
opaque res<>;
|
||||
};
|
||||
#ifdef RPC_HDR
|
||||
%
|
||||
%/*
|
||||
% * Client-side only representation of rmtcallres structure.
|
||||
% */
|
||||
%struct p_rmtcallres {
|
||||
% u_long port;
|
||||
% struct {
|
||||
% u_int res_len;
|
||||
% char *res_val;
|
||||
% } res;
|
||||
% xdrproc_t xdr_res; /* decodes res */
|
||||
%};
|
||||
%
|
||||
#endif /* def RPC_HDR */
|
||||
|
||||
/*
|
||||
* Port mapper procedures
|
||||
*/
|
||||
|
||||
program PMAPPROG {
|
||||
version PMAPVERS {
|
||||
void
|
||||
PMAPPROC_NULL(void) = 0;
|
||||
|
||||
bool
|
||||
PMAPPROC_SET(pmap) = 1;
|
||||
|
||||
bool
|
||||
PMAPPROC_UNSET(pmap) = 2;
|
||||
|
||||
unsigned long
|
||||
PMAPPROC_GETPORT(pmap) = 3;
|
||||
|
||||
pmaplist_ptr
|
||||
PMAPPROC_DUMP(void) = 4;
|
||||
|
||||
rmtcallres
|
||||
PMAPPROC_CALLIT(rmtcallargs) = 5;
|
||||
} = 2;
|
||||
} = 100000;
|
||||
%
|
||||
#ifdef RPC_HDR
|
||||
%#define PMAPVERS_PROTO ((u_long)2)
|
||||
%#define PMAPVERS_ORIG ((u_long)1)
|
||||
%
|
||||
%#else /* ndef _KERNEL */
|
||||
%
|
||||
%#include <rpc/pmap_rmt.h>
|
||||
%
|
||||
%#ifdef __cplusplus
|
||||
%extern "C" {
|
||||
%#endif
|
||||
%
|
||||
%#define PMAPPORT 111
|
||||
%
|
||||
%struct pmap {
|
||||
% long unsigned pm_prog;
|
||||
% long unsigned pm_vers;
|
||||
% long unsigned pm_prot;
|
||||
% long unsigned pm_port;
|
||||
%};
|
||||
%typedef struct pmap PMAP;
|
||||
%#ifdef __STDC__
|
||||
%extern bool_t xdr_pmap (XDR *, struct pmap *);
|
||||
%#else
|
||||
%extern bool_t xdr_pmap ();
|
||||
%#endif
|
||||
%
|
||||
%struct pmaplist {
|
||||
% struct pmap pml_map;
|
||||
% struct pmaplist *pml_next;
|
||||
%};
|
||||
%typedef struct pmaplist PMAPLIST;
|
||||
%typedef struct pmaplist *pmaplist_ptr;
|
||||
%
|
||||
%
|
||||
%#ifdef __cplusplus
|
||||
%}
|
||||
%#endif
|
||||
%
|
||||
%#endif /* ndef _KERNEL */
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Remote execution (rex) protocol specification
|
||||
*/
|
||||
|
||||
#ifndef RPC_HDR
|
||||
%#ifndef lint
|
||||
%/*static char sccsid[] = "from: @(#)rex.x 1.3 87/09/18 Copyr 1987 Sun Micro";*/
|
||||
%/*static char sccsid[] = "from: @(#)rex.x 2.1 88/08/01 4.0 RPCSRC";*/
|
||||
%static const char rcsid[] =
|
||||
% "$FreeBSD: src/include/rpcsvc/rex.x,v 1.6 1999/08/27 23:45:10 peter Exp $";
|
||||
%#endif /* not lint */
|
||||
#endif
|
||||
|
||||
const STRINGSIZE = 1024;
|
||||
typedef string rexstring<1024>;
|
||||
|
||||
/*
|
||||
* values to pass to REXPROC_SIGNAL
|
||||
*/
|
||||
const SIGINT = 2; /* interrupt */
|
||||
|
||||
/*
|
||||
* Values for rst_flags, below
|
||||
*/
|
||||
const REX_INTERACTIVE = 1; /* interactive mode */
|
||||
|
||||
struct rex_start {
|
||||
rexstring rst_cmd<>; /* list of command and args */
|
||||
rexstring rst_host; /* working directory host name */
|
||||
rexstring rst_fsname; /* working directory file system name */
|
||||
rexstring rst_dirwithin;/* working directory within file system */
|
||||
rexstring rst_env<>; /* list of environment */
|
||||
unsigned int rst_port0; /* port for stdin */
|
||||
unsigned int rst_port1; /* port for stdout */
|
||||
unsigned int rst_port2; /* port for stderr */
|
||||
unsigned int rst_flags; /* options - see const above */
|
||||
};
|
||||
|
||||
struct rex_result {
|
||||
int rlt_stat; /* integer status code */
|
||||
rexstring rlt_message; /* string message for human consumption */
|
||||
};
|
||||
|
||||
|
||||
struct sgttyb {
|
||||
unsigned four; /* always equals 4 */
|
||||
opaque chars[4];
|
||||
/* chars[0] == input speed */
|
||||
/* chars[1] == output speed */
|
||||
/* chars[2] == kill character */
|
||||
/* chars[3] == erase character */
|
||||
unsigned flags;
|
||||
};
|
||||
/* values for speeds above (baud rates) */
|
||||
const B0 = 0;
|
||||
const B50 = 1;
|
||||
const B75 = 2;
|
||||
const B110 = 3;
|
||||
const B134 = 4;
|
||||
const B150 = 5;
|
||||
const B200 = 6;
|
||||
const B300 = 7;
|
||||
const B600 = 8;
|
||||
const B1200 = 9;
|
||||
const B1800 = 10;
|
||||
const B2400 = 11;
|
||||
const B4800 = 12;
|
||||
const B9600 = 13;
|
||||
const B19200 = 14;
|
||||
const B38400 = 15;
|
||||
|
||||
/* values for flags above */
|
||||
const TANDEM = 0x00000001; /* send stopc on out q full */
|
||||
const CBREAK = 0x00000002; /* half-cooked mode */
|
||||
const LCASE = 0x00000004; /* simulate lower case */
|
||||
const ECHO = 0x00000008; /* echo input */
|
||||
const CRMOD = 0x00000010; /* map \r to \r\n on output */
|
||||
const RAW = 0x00000020; /* no i/o processing */
|
||||
const ODDP = 0x00000040; /* get/send odd parity */
|
||||
const EVENP = 0x00000080; /* get/send even parity */
|
||||
const ANYP = 0x000000c0; /* get any parity/send none */
|
||||
const NLDELAY = 0x00000300; /* \n delay */
|
||||
const NL0 = 0x00000000;
|
||||
const NL1 = 0x00000100; /* tty 37 */
|
||||
const NL2 = 0x00000200; /* vt05 */
|
||||
const NL3 = 0x00000300;
|
||||
const TBDELAY = 0x00000c00; /* horizontal tab delay */
|
||||
const TAB0 = 0x00000000;
|
||||
const TAB1 = 0x00000400; /* tty 37 */
|
||||
const TAB2 = 0x00000800;
|
||||
const XTABS = 0x00000c00; /* expand tabs on output */
|
||||
const CRDELAY = 0x00003000; /* \r delay */
|
||||
const CR0 = 0x00000000;
|
||||
const CR1 = 0x00001000; /* tn 300 */
|
||||
const CR2 = 0x00002000; /* tty 37 */
|
||||
const CR3 = 0x00003000; /* concept 100 */
|
||||
const VTDELAY = 0x00004000; /* vertical tab delay */
|
||||
const FF0 = 0x00000000;
|
||||
const FF1 = 0x00004000; /* tty 37 */
|
||||
const BSDELAY = 0x00008000; /* \b delay */
|
||||
const BS0 = 0x00000000;
|
||||
const BS1 = 0x00008000;
|
||||
const CRTBS = 0x00010000; /* do backspacing for crt */
|
||||
const PRTERA = 0x00020000; /* \ ... / erase */
|
||||
const CRTERA = 0x00040000; /* " \b " to wipe out char */
|
||||
const TILDE = 0x00080000; /* hazeltine tilde kludge */
|
||||
const MDMBUF = 0x00100000; /* start/stop output on carrier intr */
|
||||
const LITOUT = 0x00200000; /* literal output */
|
||||
const TOSTOP = 0x00400000; /* SIGTTOU on background output */
|
||||
const FLUSHO = 0x00800000; /* flush output to terminal */
|
||||
const NOHANG = 0x01000000; /* no SIGHUP on carrier drop */
|
||||
const L001000 = 0x02000000;
|
||||
const CRTKIL = 0x04000000; /* kill line with " \b " */
|
||||
const PASS8 = 0x08000000;
|
||||
const CTLECH = 0x10000000; /* echo control chars as ^X */
|
||||
const PENDIN = 0x20000000; /* tp->t_rawq needs reread */
|
||||
const DECCTQ = 0x40000000; /* only ^Q starts after ^S */
|
||||
const NOFLSH = 0x80000000; /* no output flush on signal */
|
||||
|
||||
struct tchars {
|
||||
unsigned six; /* always equals 6 */
|
||||
opaque chars[6];
|
||||
/* chars[0] == interrupt char */
|
||||
/* chars[1] == quit char */
|
||||
/* chars[2] == start output char */
|
||||
/* chars[3] == stop output char */
|
||||
/* chars[4] == end-of-file char */
|
||||
/* chars[5] == input delimeter (like nl) */
|
||||
};
|
||||
|
||||
struct ltchars {
|
||||
unsigned six; /* always equals 6 */
|
||||
opaque chars[6];
|
||||
/* chars[0] == stop process signal */
|
||||
/* chars[1] == delayed stop process signal */
|
||||
/* chars[2] == reprint line */
|
||||
/* chars[3] == flush output */
|
||||
/* chars[4] == word erase */
|
||||
/* chars[5] == literal next character */
|
||||
unsigned mode;
|
||||
};
|
||||
|
||||
struct rex_ttysize {
|
||||
int ts_lines;
|
||||
int ts_cols;
|
||||
};
|
||||
|
||||
struct rex_ttymode {
|
||||
sgttyb basic; /* standard unix tty flags */
|
||||
tchars more; /* interrupt, kill characters, etc. */
|
||||
ltchars yetmore; /* special Berkeley characters */
|
||||
unsigned andmore; /* and Berkeley modes */
|
||||
};
|
||||
|
||||
/* values for andmore above */
|
||||
const LCRTBS = 0x0001; /* do backspacing for crt */
|
||||
const LPRTERA = 0x0002; /* \ ... / erase */
|
||||
const LCRTERA = 0x0004; /* " \b " to wipe out char */
|
||||
const LTILDE = 0x0008; /* hazeltine tilde kludge */
|
||||
const LMDMBUF = 0x0010; /* start/stop output on carrier intr */
|
||||
const LLITOUT = 0x0020; /* literal output */
|
||||
const LTOSTOP = 0x0040; /* SIGTTOU on background output */
|
||||
const LFLUSHO = 0x0080; /* flush output to terminal */
|
||||
const LNOHANG = 0x0100; /* no SIGHUP on carrier drop */
|
||||
const LL001000 = 0x0200;
|
||||
const LCRTKIL = 0x0400; /* kill line with " \b " */
|
||||
const LPASS8 = 0x0800;
|
||||
const LCTLECH = 0x1000; /* echo control chars as ^X */
|
||||
const LPENDIN = 0x2000; /* needs reread */
|
||||
const LDECCTQ = 0x4000; /* only ^Q starts after ^S */
|
||||
const LNOFLSH = 0x8000; /* no output flush on signal */
|
||||
|
||||
program REXPROG {
|
||||
version REXVERS {
|
||||
|
||||
/*
|
||||
* Start remote execution
|
||||
*/
|
||||
rex_result
|
||||
REXPROC_START(rex_start) = 1;
|
||||
|
||||
/*
|
||||
* Wait for remote execution to terminate
|
||||
*/
|
||||
rex_result
|
||||
REXPROC_WAIT(void) = 2;
|
||||
|
||||
/*
|
||||
* Send tty modes
|
||||
*/
|
||||
void
|
||||
REXPROC_MODES(rex_ttymode) = 3;
|
||||
|
||||
/*
|
||||
* Send window size change
|
||||
*/
|
||||
void
|
||||
REXPROC_WINCH(rex_ttysize) = 4;
|
||||
|
||||
/*
|
||||
* Send other signal
|
||||
*/
|
||||
void
|
||||
REXPROC_SIGNAL(int) = 5;
|
||||
} = 1;
|
||||
} = 100017;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user