Merged from 4.5.0-beta3a

This commit is contained in:
Joel Sherrill
2000-06-12 15:00:15 +00:00
parent 0ab6547431
commit df49c60c96
2120 changed files with 123526 additions and 13179 deletions

View File

@@ -11,67 +11,32 @@ ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
SUBDIRS = doc make tools @TARGET_SUBDIRS@ SUBDIRS = doc make tools @TARGET_SUBDIRS@
AUTOMAKE_FILES = \ AUTOMAKE_FILES = automake/subdirs.am automake/local.am automake/lib.am
automake/subdirs.am \
automake/local.am \
automake/lib.am
ACLOCAL_FILES += \ ACLOCAL_FILES += aclocal/ar-s.m4 aclocal/bsp-alias.m4 \
aclocal/ar-s.m4 \ aclocal/canonical-host.m4 aclocal/canonical-target-name.m4 \
aclocal/bsp-alias.m4 \ aclocal/canonicalize-tools.m4 aclocal/check-bsps.m4 \
aclocal/canonical-host.m4 \ aclocal/check-bsp-cache.m4 aclocal/check-cpu.m4 aclocal/check-cxx.m4 \
aclocal/canonical-target-name.m4 \ aclocal/check-itron.m4 aclocal/check-multiprocessing.m4 \
aclocal/canonicalize-tools.m4 \ aclocal/check-networking.m4 aclocal/check-newlib.m4 \
aclocal/check-bsps.m4 \ aclocal/check-posix.m4 aclocal/check-rdbg.m4 aclocal/enable-bare.m4 \
aclocal/check-bsp-cache.m4 \ aclocal/enable-cxx.m4 aclocal/enable-gcc28.m4 aclocal/enable-hwapi.m4 \
aclocal/check-cpu.m4 \ aclocal/enable-inlines.m4 aclocal/enable-itron.m4 \
aclocal/check-cxx.m4 \ aclocal/enable-libcdir.m4 aclocal/enable-multiprocessing.m4 \
aclocal/check-itron.m4 \ aclocal/enable-networking.m4 aclocal/enable-posix.m4 \
aclocal/check-multiprocessing.m4 \ aclocal/enable-rdbg.m4 aclocal/enable-rtemsbsp.m4 \
aclocal/check-networking.m4 \ aclocal/enable-tests.m4 aclocal/gcc-pipe.m4 aclocal/gcc-specs.m4 \
aclocal/check-newlib.m4 \ aclocal/i386-gas-code16.m4 aclocal/path-ksh.m4 aclocal/path-perl.m4 \
aclocal/check-posix.m4 \ aclocal/prog-cc.m4 aclocal/prog-cxx.m4 aclocal/project-root.m4 \
aclocal/check-rdbg.m4 \ aclocal/rtems-top.m4 aclocal/sysv-ipc.m4 aclocal/target.m4 \
aclocal/enable-bare.m4 \ aclocal/tool-paths.m4 aclocal/tool-prefix.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 = \ noinst_SCRIPTS = bootstrap
bootstrap
EXTRA_DIST = \ EXTRA_DIST = $(AUTOMAKE_FILES) $(ACLOCAL_FILES) README.configure SUPPORT \
$(AUTOMAKE_FILES) \ VERSION LICENSE $(noinst_SCRIPTS)
$(ACLOCAL_FILES) \
README.configure \
SUPPORT \
VERSION \
LICENSE \
$(noinst_SCRIPTS)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(ACLOCAL_FILES) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(ACLOCAL_FILES)
include $(top_srcdir)/automake/subdirs.am include $(top_srcdir)/automake/subdirs.am
include $(top_srcdir)/automake/local.am include $(top_srcdir)/automake/host.am

View File

@@ -2,4 +2,4 @@
# $Id$ # $Id$
# #
RTEMS Version 4.5.0-beta1b RTEMS Version 4.5.0-beta3a

View File

@@ -7,12 +7,15 @@ RTEMS_HOST=$host_os
changequote(,)dnl changequote(,)dnl
case "${target}" in case "${target}" in
# hpux unix port should go here # hpux unix port should go here
i[3456]86-pc-linux*) # unix "simulator" port i[34567]86-*linux*) # unix "simulator" port
RTEMS_HOST=Linux RTEMS_HOST=Linux
;; ;;
i[3456]86-*freebsd2*) # unix "simulator" port i[34567]86-*freebsd2*) # unix "simulator" port
RTEMS_HOST=FreeBSD RTEMS_HOST=FreeBSD
;; ;;
i[34567]86-pc-cygwin*) # Cygwin is just enough unix like :)
RTEMS_HOST=Cygwin
;;
sparc-sun-solaris*) # unix "simulator" port sparc-sun-solaris*) # unix "simulator" port
RTEMS_HOST=Solaris RTEMS_HOST=Solaris
;; ;;

View File

@@ -15,10 +15,13 @@ AC_MSG_CHECKING(rtems target cpu)
changequote(,)dnl changequote(,)dnl
case "${target}" in case "${target}" in
# hpux unix port should go here # hpux unix port should go here
i[3456]86-pc-linux*) # unix "simulator" port i[34567]86-*linux*) # unix "simulator" port
RTEMS_CPU=unix 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 RTEMS_CPU=unix
;; ;;
no_cpu-*rtems*) no_cpu-*rtems*)

View File

@@ -12,7 +12,8 @@ AC_REQUIRE([RTEMS_ENABLE_MULTIPROCESSING])dnl
AC_CACHE_CHECK([whether BSP supports multiprocessing], AC_CACHE_CHECK([whether BSP supports multiprocessing],
rtems_cv_HAS_MP, rtems_cv_HAS_MP,
[dnl [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 if test "$RTEMS_HAS_MULTIPROCESSING" = "yes"; then
rtems_cv_HAS_MP="yes" ; rtems_cv_HAS_MP="yes" ;
else else

View File

@@ -15,10 +15,10 @@ esac],[RTEMS_HAS_ITRON_API=yes])
changequote(,)dnl changequote(,)dnl
case "${target}" in case "${target}" in
# hpux unix port should go here # 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 RTEMS_HAS_ITRON_API=no
;; ;;
i[3456]86-*freebsd2*) # unix "simulator" port i[34567]86-*freebsd2*) # unix "simulator" port
RTEMS_HAS_ITRON_API=no RTEMS_HAS_ITRON_API=no
;; ;;
no_cpu-*rtems*) no_cpu-*rtems*)

View File

@@ -15,10 +15,10 @@ esac],[RTEMS_HAS_POSIX_API=yes])
changequote(,)dnl changequote(,)dnl
case "${target}" in case "${target}" in
# hpux unix port should go here # 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 RTEMS_HAS_POSIX_API=no
;; ;;
i[3456]86-*freebsd2*) # unix "simulator" port i[34567]86-*freebsd2*) # unix "simulator" port
RTEMS_HAS_POSIX_API=no RTEMS_HAS_POSIX_API=no
;; ;;
no_cpu-*rtems*) no_cpu-*rtems*)

View File

@@ -64,6 +64,8 @@ unset ac_cv_prog_gxx
unset ac_cv_prog_cc_g unset ac_cv_prog_cc_g
unset ac_cv_prog_cxx_works unset ac_cv_prog_cxx_works
unset ac_cv_prog_cxx_cross unset ac_cv_prog_cxx_cross
dnl somehow autoconf macros leave this file
rm -f conftest.C
]) ])
AC_DEFUN(RTEMS_PROG_CXX_FOR_TARGET, AC_DEFUN(RTEMS_PROG_CXX_FOR_TARGET,

View File

@@ -54,7 +54,7 @@ if test "$no_recursion" != yes; then
echo configuring in $target_subdir/$ac_config_dir echo configuring in $target_subdir/$ac_config_dir
case "$srcdir" in case "$srcdir" in
.) ;; ## .) ;;
*) *)
if test -d $target_subdir/$ac_config_dir || mkdir $target_subdir/$ac_config_dir; then :; if test -d $target_subdir/$ac_config_dir || mkdir $target_subdir/$ac_config_dir; then :;
else else
@@ -72,8 +72,8 @@ changequote(, )dnl
changequote([, ])dnl changequote([, ])dnl
case "$srcdir" in case "$srcdir" in
.) # No --srcdir option. We are building in place. ## .) # No --srcdir option. We are building in place.
ac_sub_srcdir=$srcdir ;; ## ac_sub_srcdir=$srcdir ;;
/*) # Absolute path. /*) # Absolute path.
ac_sub_srcdir=$srcdir/$ac_config_dir ;; ac_sub_srcdir=$srcdir/$ac_config_dir ;;
*) # Relative path. *) # Relative path.

28
automake/host.am Normal file
View 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

View File

@@ -5,13 +5,59 @@
## Once automake is fully integrated these make targets ## Once automake is fully integrated these make targets
## and this file will probably be removed ## and this file will probably be removed
debug-am: ## translate VARIANT into VARIANT_V
debug: debug-am VARIANT = OPTIMIZE
.PHONY: debug debug-am
profile-am: VARIANT_OPTIMIZE_V = OPTIMIZE
profile: profile-am VARIANT_DEBUG_V = DEBUG
.PHONY: profile profile-am 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-am: $(PREINSTALL_FILES)
preinstall: preinstall-am preinstall: preinstall-am
@@ -20,3 +66,15 @@ preinstall: preinstall-am
depend-am: depend-am:
depend: depend-am depend: depend-am
.PHONY: 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

View File

@@ -8,9 +8,7 @@
## and this file will probably be removed ## and this file will probably be removed
depend-recursive \ depend-recursive \
preinstall-recursive \ preinstall-recursive:
debug-recursive \
profile-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \ @set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \ dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \ target=`echo $@ | sed s/-recursive//`; \
@@ -31,12 +29,6 @@ profile-recursive:
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail" fi; test -z "$$fail"
debug: debug-recursive
.PHONY: debug-recursive
profile: profile-recursive
.PHONY: profile-recursive
preinstall: preinstall-recursive preinstall: preinstall-recursive
.PHONY: preinstall-recursive .PHONY: preinstall-recursive

View File

@@ -13,6 +13,8 @@
# source tree # source tree
progname=`basename $0` progname=`basename $0`
top_srcdir=`dirname $0`
verbose=""; verbose="";
quiet="false" quiet="false"
mode="generate" mode="generate"
@@ -31,9 +33,9 @@ usage()
exit 1; exit 1;
} }
if test ! -f VERSION; then if test ! -f $top_srcdir/VERSION; then
echo "${progname}:" echo "${progname}:"
echo " Please change directory to RTEMS's toplevel directory" echo " Installation problem: Can't find file VERSION"
exit 1; exit 1;
fi fi
@@ -57,25 +59,31 @@ case $1 in
esac esac
done done
pwd=`pwd`;
case $mode in case $mode in
generate) 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 for i in $confs; do
dir=`dirname $i`; dir=`dirname $i`;
( test "$quiet" = "true" || echo "$dir"; ( test "$quiet" = "true" || echo "$dir";
cd $dir; cd $dir;
aclocal -I $aclocal_dir; aclocal -I $aclocal_dir;
autoconf; autoconf;
test -f Makefile.am && automake $verbose ;
test -n "`grep CONFIG_HEADER configure.in`" && autoheader ; 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`" \ test -f Makefile.am && test -n "`grep 'stamp-h\.in' Makefile.in`" \
&& echo timestamp > stamp-h.in && echo timestamp > stamp-h.in
) )
done done
;; ;;
clean) clean)
test "$quiet" = "true" || echo "removing automake generated Makefile.in files" test "$quiet" = "true" || echo "removing automake generated Makefile.in files"
files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'` ; files=`find . -name 'Makefile.am' -print | sed -e 's%\.am%\.in%g'` ;

View File

@@ -4,6 +4,7 @@
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
## NOTE: This Makefile.am is rather fragile to the value of RTEMS_BSP ## NOTE: This Makefile.am is rather fragile to the value of RTEMS_BSP
## Esp. make clean and make distclean have unwanted side-effects ## Esp. make clean and make distclean have unwanted side-effects
## if RTEMS_BSP is not properly set up. ## if RTEMS_BSP is not properly set up.
@@ -11,10 +12,7 @@ ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
RTEMS_BSP = $(RTEMS_BSP_LIST) RTEMS_BSP = $(RTEMS_BSP_LIST)
## The '.' in SUBDIRS ensures that local make-targets (xxx-am) will be ## The '.' in SUBDIRS ensures that local make-targets (xxx-am) will be
## triggered before $(RTEMS_BSP_LIST) subdirectories are made. ## triggered before $(RTEMS_BSP_LIST) subdirectories are made.
SUBDIRS= \ SUBDIRS = make . $(RTEMS_BSP)
make \
. \
$(RTEMS_BSP)
## Use @RTEMS_BSP_LIST@ here, using $(RTEMS_BSP_LIST) would trigger ## Use @RTEMS_BSP_LIST@ here, using $(RTEMS_BSP_LIST) would trigger
## this rule for invalid BSPs ## this rule for invalid BSPs
@@ -30,23 +28,15 @@ $(RTEMS_BSP)
done done
## Let all RTEMS' make targets depend on ${RTEMS_BSP} ## Let all RTEMS' make targets depend on ${RTEMS_BSP}
all-am: ${RTEMS_BSP} all-local: ${RTEMS_BSP}
debug-am: ${RTEMS_BSP}
profile-am: ${RTEMS_BSP}
preinstall-am: ${RTEMS_BSP} preinstall-am: ${RTEMS_BSP}
depend-am: ${RTEMS_BSP} depend-am: ${RTEMS_BSP}
## Pull in extra files intro the distribution ## Pull in extra files intro the distribution
EXTRA_DIST = \ EXTRA_DIST = ACKNOWLEDGEMENTS README.DOS REQUIRES PROBLEMS TESTED README \
ACKNOWLEDGEMENTS \ UPDATE_HELP
README.DOS \
REQUIRES \
PROBLEMS \
TESTED \
README \
UPDATE_HELP
DIST_SUBDIRS = ${RTEMS_BSP} DIST_SUBDIRS = ${RTEMS_BSP}
## ------------------------------------------------------- ## -------------------------------------------------------
include $(top_srcdir)/../automake/subdirs.am include $(top_srcdir)/../automake/subdirs.am
include $(top_srcdir)/../automake/local.am include $(top_srcdir)/../automake/host.am

View File

@@ -13,4 +13,4 @@ rtems_make_DATA = $(GENERIC_FILES)
EXTRA_DIST = target.cfg.in EXTRA_DIST = target.cfg.in
include $(top_srcdir)/../../automake/local.am include $(top_srcdir)/../../automake/host.am

View File

@@ -5,17 +5,19 @@
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
SUBDIRS= @cfg_subdirs@ wrapup tests SUBDIRS = @cfg_subdirs@ wrapup tests
rtems_bspdir=$(prefix)/@RTEMS_BSP@ rtems_bspdir = $(prefix)/@RTEMS_BSP@
# NOTE: The wildcard on the install should pick up everything except # NOTE: The wildcard on the install should pick up everything except
# the tests directory. This significantly minimizes the install size. # the tests directory. This significantly minimizes the install size.
install-data-local: install-data-local:
rm -rf $(rtems_bspdir)/[bsl]*;
$(mkinstalldirs) $(rtems_bspdir) $(mkinstalldirs) $(rtems_bspdir)
cd $(PROJECT_ROOT); \ cd $(PROJECT_ROOT); \
tar cf - @RTEMS_BSP@/[bilsuM]* | (cd $(DESTDIR)$(prefix); tar xpBf - ); 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/subdirs.am
include $(top_srcdir)/../../automake/local.am include $(top_srcdir)/../../automake/host.am

View File

@@ -8,18 +8,15 @@ H_FILES = itron.h
noinst_HEADERS = $(H_FILES) noinst_HEADERS = $(H_FILES)
PREINSTALL_FILES = \ PREINSTALL_FILES += $(PROJECT_INCLUDE) \
$(PROJECT_INCLUDE) \ $(noinst_HEADERS:%=$(PROJECT_INCLUDE)/%)
$(noinst_HEADERS:%=$(PROJECT_INCLUDE)/%)
$(PROJECT_INCLUDE): $(PROJECT_INCLUDE):
@$(mkinstalldirs) $@ @$(mkinstalldirs) $@
$(PROJECT_INCLUDE)/%.h: %.h $(PROJECT_INCLUDE)/%.h: %.h
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
all-am: $(PREINSTALL_FILES) all-local: $(PREINSTALL_FILES)
debug-am: $(PREINSTALL_FILES)
profile-am: $(PREINSTALL_FILES)
SUBDIRS = rtems itronsys SUBDIRS = rtems itronsys

View File

@@ -4,22 +4,19 @@
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
H_FILES = eventflags.h fmempool.h intr.h mbox.h msgbuffer.h network.h \ H_FILES = eventflags.h fmempool.h intr.h mbox.h msgbuffer.h network.h port.h \
port.h semaphore.h status.h sysmgmt.h task.h time.h types.h vmempool.h semaphore.h status.h sysmgmt.h task.h time.h types.h vmempool.h
noinst_HEADERS = $(H_FILES) noinst_HEADERS = $(H_FILES)
PREINSTALL_FILES = \ PREINSTALL_FILES += $(PROJECT_INCLUDE)/itronsys \
$(PROJECT_INCLUDE)/itronsys \ $(noinst_HEADERS:%=$(PROJECT_INCLUDE)/itronsys/%)
$(noinst_HEADERS:%=$(PROJECT_INCLUDE)/itronsys/%)
$(PROJECT_INCLUDE)/itronsys: $(PROJECT_INCLUDE)/itronsys:
@$(mkinstalldirs) $@ @$(mkinstalldirs) $@
$(PROJECT_INCLUDE)/itronsys/%.h: %.h $(PROJECT_INCLUDE)/itronsys/%.h: %.h
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
all-am: $(PREINSTALL_FILES) all-local: $(PREINSTALL_FILES)
debug-am: $(PREINSTALL_FILES)
profile-am: $(PREINSTALL_FILES)
include $(top_srcdir)/../../../../automake/local.am include $(top_srcdir)/../../../../automake/local.am

View File

@@ -5,23 +5,20 @@
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
H_FILES = config.h eventflags.h fmempool.h intr.h itronapi.h mbox.h \ 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 \ msgbuffer.h network.h object.h port.h semaphore.h sysmgmt.h task.h \
task.h time.h vmempool.h time.h vmempool.h
noinst_HEADERS = $(H_FILES) noinst_HEADERS = $(H_FILES)
PREINSTALL_FILES = \ PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/itron \
$(PROJECT_INCLUDE)/rtems/itron \ $(H_FILES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
$(H_FILES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
$(PROJECT_INCLUDE)/rtems/itron: $(PROJECT_INCLUDE)/rtems/itron:
@$(mkinstalldirs) $@ @$(mkinstalldirs) $@
$(PROJECT_INCLUDE)/rtems/itron/%.h: %.h $(PROJECT_INCLUDE)/rtems/itron/%.h: %.h
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
all-am: $(PREINSTALL_FILES) all-local: $(PREINSTALL_FILES)
debug-am: $(PREINSTALL_FILES)
profile-am: $(PREINSTALL_FILES)
EXTRA_DIST = README EXTRA_DIST = README

View File

@@ -3,16 +3,16 @@
## ##
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
if INLINE if INLINE
I_FILES = eventflags.inl fmempool.inl intr.inl mbox.inl msgbuffer.inl \ I_FILES = eventflags.inl fmempool.inl intr.inl mbox.inl msgbuffer.inl \
network.inl port.inl semaphore.inl sysmgmt.inl task.inl \ network.inl port.inl semaphore.inl sysmgmt.inl task.inl time.inl \
time.inl vmempool.inl vmempool.inl
noinst_HEADERS = $(I_FILES) noinst_HEADERS = $(I_FILES)
PREINSTALL_FILES = \ PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/itron \
$(PROJECT_INCLUDE)/rtems/itron \ $(I_FILES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
$(I_FILES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
$(PROJECT_INCLUDE)/rtems/itron: $(PROJECT_INCLUDE)/rtems/itron:
@$(mkinstalldirs) $@ @$(mkinstalldirs) $@
@@ -20,8 +20,6 @@ $(PROJECT_INCLUDE)/rtems/itron/%.inl: %.inl
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
endif endif
all-am: $(PREINSTALL_FILES) all-local: $(PREINSTALL_FILES)
debug-am: $(PREINSTALL_FILES)
profile-am: $(PREINSTALL_FILES)
include $(top_srcdir)/../../../../automake/local.am include $(top_srcdir)/../../../../automake/local.am

View File

@@ -18,9 +18,9 @@ EVENTFLAGS_C_FILES = eventflags.c
MAILBOX_C_FILES = mbox.c MAILBOX_C_FILES = mbox.c
MSGBUFFER_C_FILES = msgbuffer.c msgbuffertranslatereturncode.c \ MSGBUFFER_C_FILES = msgbuffer.c msgbuffertranslatereturncode.c cre_mbf.c \
cre_mbf.c del_mbf.c prcv_mbf.c psnd_mbf.c rcv_mbf.c ref_mbf.c snd_mbf.c \ del_mbf.c prcv_mbf.c psnd_mbf.c rcv_mbf.c ref_mbf.c snd_mbf.c trcv_mbf.c \
trcv_mbf.c tsnd_mbf.c tsnd_mbf.c
RENDEZVOUS_C_FILES = port.c RENDEZVOUS_C_FILES = port.c
@@ -49,20 +49,11 @@ include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../../../../automake/lib.am include $(top_srcdir)/../../../../automake/lib.am
AM_CPPFLAGS += -D__RTEMS_INSIDE__ AM_CPPFLAGS += -D__RTEMS_INSIDE__
AM_CFLAGS += $(CFLAGS_OS_V)
all: ${ARCH} ${OBJS} all-local: ${ARCH} ${OBJS}
UNUSED_C_FILES = \ UNUSED_C_FILES = cre_mbx.c del_mbx.c mboxtranslatereturncode.c network.c \
cre_mbx.c del_mbx.c \ prcv_mbx.c rcv_mbx.c ref_mbx.c snd_mbx.c sysmgmt.c trcv_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) EXTRA_DIST = $(C_FILES) $(UNUSED_C_FILES)

View File

@@ -30,7 +30,6 @@ ER cre_tsk(
) )
{ {
register Thread_Control *the_thread; register Thread_Control *the_thread;
char *name = "trn";
boolean status; boolean status;
Priority_Control core_priority; Priority_Control core_priority;
@@ -90,7 +89,7 @@ ER cre_tsk(
THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE, THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE,
NULL, /* no budget algorithm callout */ NULL, /* no budget algorithm callout */
0, 0,
&name NULL
); );
if ( !status ) { if ( !status ) {

View File

@@ -38,7 +38,7 @@ void _ITRON_Eventflags_Manager_initialization(
/* control block */ /* control block */
FALSE, /* TRUE if names for this object */ FALSE, /* TRUE if names for this object */
/* are strings */ /* are strings */
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */ ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
/* name */ /* name */
FALSE /* TRUE if this class is threads */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -39,7 +39,7 @@ void _ITRON_Fixed_memory_pool_Manager_initialization(
/* size of this object's control block */ /* size of this object's control block */
FALSE, /* TRUE if names for this object */ FALSE, /* TRUE if names for this object */
/* are strings */ /* are strings */
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */ ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
/* name */ /* name */
FALSE /* TRUE if this class is threads */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -41,7 +41,7 @@ void _ITRON_Semaphore_Manager_initialization(
sizeof( ITRON_Semaphore_Control ), /* size of this object's control block */ sizeof( ITRON_Semaphore_Control ), /* size of this object's control block */
FALSE, /* TRUE if names for this object */ FALSE, /* TRUE if names for this object */
/* are strings */ /* are strings */
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */ ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
/* name */ /* name */
FALSE /* TRUE if this class is threads */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -40,7 +40,7 @@ void _ITRON_Mailbox_Manager_initialization(
sizeof( ITRON_Mailbox_Control ), /* size of this object's control block */ sizeof( ITRON_Mailbox_Control ), /* size of this object's control block */
FALSE, /* TRUE if names for this object */ FALSE, /* TRUE if names for this object */
/* are strings */ /* are strings */
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */ ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
/* name */ /* name */
FALSE /* TRUE if this class is threads */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -43,7 +43,7 @@ void _ITRON_Message_buffer_Manager_initialization(
block */ block */
FALSE, /* TRUE if names for this FALSE, /* TRUE if names for this
object are strings */ object are strings */
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each
object's name */ object's name */
FALSE /* TRUE if this class is threads */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -36,7 +36,7 @@ void _ITRON_Port_Manager_initialization(
sizeof( ITRON_Port_Control ), /* size of this object's control block */ sizeof( ITRON_Port_Control ), /* size of this object's control block */
FALSE, /* TRUE if names for this object */ FALSE, /* TRUE if names for this object */
/* are strings */ /* 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 */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -39,7 +39,7 @@ void _ITRON_Variable_memory_pool_Manager_initialization(
/* size of this object's control block */ /* size of this object's control block */
FALSE, /* TRUE if names for this object */ FALSE, /* TRUE if names for this object */
/* are strings */ /* are strings */
RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */ ITRON_MAXIMUM_NAME_LENGTH, /* maximum length of each object's */
/* name */ /* name */
FALSE /* TRUE if this class is threads */ FALSE /* TRUE if this class is threads */
); );

View File

@@ -5,8 +5,7 @@
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
SUBDIRS = include libc libcpu libbsp \ SUBDIRS = include libc libcpu libbsp
$(LIBHWAPI)
include $(top_srcdir)/../../../automake/subdirs.am include $(top_srcdir)/../../../automake/subdirs.am
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -24,10 +24,6 @@ extern "C" {
{ console_initialize, console_open, console_close, \ { console_initialize, console_open, console_close, \
console_read, console_write, console_control } console_read, console_write, console_control }
void console_reserve_resources(
rtems_configuration_table *configuration
);
rtems_device_driver console_initialize( rtems_device_driver console_initialize(
rtems_device_major_number, rtems_device_major_number,
rtems_device_minor_number, rtems_device_minor_number,

View File

@@ -7,6 +7,10 @@
#ifndef __RTEMS_ERROR_h #ifndef __RTEMS_ERROR_h
#define __RTEMS_ERROR_h #define __RTEMS_ERROR_h
#ifdef __cplusplus
extern "C" {
#endif
/* /*
* rtems_error() and rtems_panic() support * rtems_error() and rtems_panic() support
*/ */
@@ -34,5 +38,10 @@ void rtems_panic(const char *printf_format, ...);
extern int rtems_panic_in_progress; extern int rtems_panic_in_progress;
#ifdef __cplusplus
}
#endif
#endif #endif
/* end of include file */ /* end of include file */

View File

@@ -14,6 +14,8 @@
#ifndef TERMIOS_H #ifndef TERMIOS_H
#define TERMIOS_H #define TERMIOS_H
#include <sys/types.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -174,9 +176,15 @@ struct termios {
#define TCSADRAIN 1 #define TCSADRAIN 1
#define TCSAFLUSH 2 #define TCSAFLUSH 2
int tcdrain(int);
int tcflow(int, int);
int tcflush(int, int);
int tcgetattr(int, struct termios *); int tcgetattr(int, struct termios *);
int tcsetattr(int, 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); speed_t cfgetospeed(const struct termios *tp);
int cfsetospeed(struct termios *tp, speed_t speed); int cfsetospeed(struct termios *tp, speed_t speed);
speed_t cfgetispeed(const struct termios *tp); speed_t cfgetispeed(const struct termios *tp);

View File

@@ -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 UNIX_LIBC_C_FILES = unixlibc.c hosterr.c
COMMON_C_FILES = $(BASE_FS_C_FILES) $(MALLOC_C_FILES) \ COMMON_C_FILES = gxx_wrappers.c $(BASE_FS_C_FILES) $(MALLOC_C_FILES) $(TERMIOS_C_FILES) \
$(TERMIOS_C_FILES) $(ERROR_C_FILES) $(ASSOCIATION_C_FILES) $(ERROR_C_FILES) $(ASSOCIATION_C_FILES)
UNIX_C_FILES = $(UNIX_LIBC_C_FILES) imfs_unixstub.c UNIX_C_FILES = $(UNIX_LIBC_C_FILES) imfs_unixstub.c
EMBEDDED_C_FILES = $(LIBC_GLUE_C_FILES) \ EMBEDDED_C_FILES = $(LIBC_GLUE_C_FILES) $(PASSWORD_GROUP_C_FILES) \
$(PASSWORD_GROUP_C_FILES) $(TERMINAL_IDENTIFICATION_C_FILES) \ $(TERMINAL_IDENTIFICATION_C_FILES) $(SYSTEM_CALL_C_FILES) \
$(SYSTEM_CALL_C_FILES) $(DIRECTORY_SCAN_C_FILES) \ $(DIRECTORY_SCAN_C_FILES) $(IMFS_C_FILES)
$(IMFS_C_FILES)
if UNIX if UNIX
C_FILES = $(COMMON_C_FILES) $(UNIX_C_FILES) C_FILES = $(COMMON_C_FILES) $(UNIX_C_FILES)
@@ -73,13 +72,10 @@ noinst_HEADERS = libio_.h
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../../../automake/lib.am include $(top_srcdir)/../../../automake/lib.am
PREINSTALL_FILES = \ PREINSTALL_FILES += $(PROJECT_INCLUDE) $(PROJECT_INCLUDE)/rtems \
$(PROJECT_INCLUDE) \ $(PROJECT_INCLUDE)/sys $(H_FILES:%=$(PROJECT_INCLUDE)/%) \
$(PROJECT_INCLUDE)/rtems \ $(RTEMS_H_FILES:%=$(PROJECT_INCLUDE)/rtems/%) \
$(PROJECT_INCLUDE)/sys \ $(SYS_H_FILES:%=$(PROJECT_INCLUDE)/sys/%)
$(H_FILES:%=$(PROJECT_INCLUDE)/%) \
$(RTEMS_H_FILES:%=$(PROJECT_INCLUDE)/rtems/%) \
$(SYS_H_FILES:%=$(PROJECT_INCLUDE)/sys/%)
$(PROJECT_INCLUDE): $(PROJECT_INCLUDE):
@$(mkinstalldirs) $@ @$(mkinstalldirs) $@
@@ -95,8 +91,7 @@ $(PROJECT_INCLUDE)/rtems/%.h: %.h
$(PROJECT_INCLUDE)/sys/%.h: %.h $(PROJECT_INCLUDE)/sys/%.h: %.h
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
TMPINSTALL_FILES += \ TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/$(LIBNAME)$(LIB_VARIANT).a
$(PROJECT_RELEASE)/lib/$(LIBNAME)$(LIB_VARIANT).a
OBJS = $(C_O_FILES) OBJS = $(C_O_FILES)
@@ -106,7 +101,7 @@ OBJS = $(C_O_FILES)
AM_CFLAGS += $(LIBC_DEFINES) AM_CFLAGS += $(LIBC_DEFINES)
all: ${ARCH} $(TMPINSTALL_FILES) all-local: ${ARCH} $(TMPINSTALL_FILES)
$(LIB): ${OBJS} $(LIB): ${OBJS}
$(make-library) $(make-library)
@@ -116,9 +111,7 @@ $(PROJECT_RELEASE)/lib/$(LIBNAME)$(LIB_VARIANT).a: $(LIB)
DOC_FILES = TODO CASES DOC_FILES = TODO CASES
EXTRA_DIST = \ EXTRA_DIST = $(DOC_FILES) $(COMMON_C_FILES) $(EMBEDDED_C_FILES) \
$(DOC_FILES) \ $(UNIX_C_FILES) $(H_FILES) $(RTEMS_H_FILES) $(SYS_H_FILES)
$(COMMON_C_FILES) $(EMBEDDED_C_FILES) $(UNIX_C_FILES) \
$(H_FILES) $(RTEMS_H_FILES) $(SYS_H_FILES)
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -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;
}

View File

@@ -260,7 +260,7 @@ int rtems_libio_is_open_files_in_fs(
* Look for any active file descriptor entry. * 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) { if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
@@ -304,7 +304,7 @@ int rtems_libio_is_file_open(
* Look for any active file descriptor entry. * 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) { if ((iop->flags & LIBIO_FLAGS_OPEN) != 0) {
/* /*

View File

@@ -120,7 +120,7 @@ void RTEMS_Malloc_Initialize(
rtems_build_name( 'H', 'E', 'A', 'P' ), rtems_build_name( 'H', 'E', 'A', 'P' ),
starting_address, starting_address,
length, length,
CPU_ALIGNMENT, CPU_HEAP_ALIGNMENT,
RTEMS_DEFAULT_ATTRIBUTES, RTEMS_DEFAULT_ATTRIBUTES,
&RTEMS_Malloc_Heap &RTEMS_Malloc_Heap
); );

View File

@@ -112,7 +112,7 @@ scandir(dirname, namelist, select, dcomp)
p->d_ino = d->d_ino; p->d_ino = d->d_ino;
p->d_reclen = d->d_reclen; p->d_reclen = d->d_reclen;
p->d_namlen = d->d_namlen; 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 * Check to make sure the array has space left and
* realloc the maximum size. * realloc the maximum size.

View File

@@ -28,7 +28,6 @@
* FreeBSD does not support a full POSIX termios so we have to help it out * FreeBSD does not support a full POSIX termios so we have to help it out
*/ */
#if defined(__FreeBSD__) #if defined(__FreeBSD__)
#define XTABS 0 #define XTABS 0
#define ONLRET 0 #define ONLRET 0
@@ -40,6 +39,14 @@
#define IUCLC 0 #define IUCLC 0
#endif #endif
/*
* Cygwin does not define these
*/
#if defined(__CYGWIN__)
#define ECHOPRT 0
#endif
/* /*
* The size of the cooked buffer * The size of the cooked buffer
*/ */
@@ -238,7 +245,7 @@ rtems_termios_open (
*/ */
tty->termios.c_iflag = BRKINT | ICRNL | IMAXBEL; tty->termios.c_iflag = BRKINT | ICRNL | IMAXBEL;
tty->termios.c_oflag = OPOST | ONLCR | XTABS; 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_lflag = ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;
tty->termios.c_cc[VINTR] = '\003'; tty->termios.c_cc[VINTR] = '\003';
@@ -256,8 +263,8 @@ rtems_termios_open (
tty->termios.c_cc[VWERASE] = '\027'; tty->termios.c_cc[VWERASE] = '\027';
tty->termios.c_cc[VLNEXT] = '\026'; tty->termios.c_cc[VLNEXT] = '\026';
/* setup flow control mode, clear flow control flags */ /* start with no flow control, clear flow control flags */
tty->flow_ctrl = FL_MDXON; tty->flow_ctrl = 0;
/* /*
* set low/highwater mark for XON/XOFF support * set low/highwater mark for XON/XOFF support
*/ */

View File

@@ -6,15 +6,19 @@
#include <rtems.h> #include <rtems.h>
#if 0
static int first_time; /* assumed to be zeroed by BSS initialization */ static int first_time; /* assumed to be zeroed by BSS initialization */
#endif
void rtems_termios_reserve_resources ( void rtems_termios_reserve_resources (
rtems_configuration_table *configuration, rtems_configuration_table *configuration,
rtems_unsigned32 number_of_devices rtems_unsigned32 number_of_devices
) )
{ {
#if 0
rtems_api_configuration_table *rtems_config; rtems_api_configuration_table *rtems_config;
if (!configuration) if (!configuration)
rtems_fatal_error_occurred (0xFFF0F001); rtems_fatal_error_occurred (0xFFF0F001);
rtems_config = configuration->RTEMS_api_configuration; rtems_config = configuration->RTEMS_api_configuration;
@@ -24,5 +28,6 @@ void rtems_termios_reserve_resources (
rtems_config->maximum_semaphores += 1; rtems_config->maximum_semaphores += 1;
first_time = 1; first_time = 1;
rtems_config->maximum_semaphores += (4 * number_of_devices); rtems_config->maximum_semaphores += (4 * number_of_devices);
#endif
} }

View File

@@ -62,7 +62,6 @@ int unmount(
int status; int status;
rtems_filesystem_location_info_t temp_loc; rtems_filesystem_location_info_t temp_loc;
rtems_filesystem_mount_table_entry_t temp_mt_entry; rtems_filesystem_mount_table_entry_t temp_mt_entry;
int result;
/* /*
* Are there any file systems below the mount_path specified * 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. * Allow the file system being mounted on to do its cleanup.
* XXX - Did I change these correctly ??? It looks like either I did * 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 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. * XXX I will step off in space when evaluating past the end of the node.
*/ */
@@ -120,12 +119,6 @@ int unmount(
return -1; 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 * Extract the mount table entry from the chain
*/ */
@@ -140,8 +133,7 @@ int unmount(
free( temp_loc.mt_entry ); free( temp_loc.mt_entry );
rtems_filesystem_freenode( &temp_loc ); rtems_filesystem_freenode( &temp_loc );
return result; return 0;
} }

View File

@@ -157,9 +157,9 @@ struct IMFS_jnode_tt {
uid_t st_uid; /* User ID of owner */ uid_t st_uid; /* User ID of owner */
gid_t st_gid; /* Group ID of owner */ gid_t st_gid; /* Group ID of owner */
time_t st_atime; /* Time of last access */ time_t stat_atime; /* Time of last access */
time_t st_mtime; /* Time of last modification */ time_t stat_mtime; /* Time of last modification */
time_t st_ctime; /* Time of last status change */ time_t stat_ctime; /* Time of last status change */
IMFS_jnode_types_t type; /* Type of this entry */ IMFS_jnode_types_t type; /* Type of this entry */
IMFS_types_union info; IMFS_types_union info;
}; };
@@ -168,29 +168,29 @@ struct IMFS_jnode_tt {
do { \ do { \
struct timeval tv; \ struct timeval tv; \
gettimeofday( &tv, 0 ); \ gettimeofday( &tv, 0 ); \
_jnode->st_atime = (time_t) tv.tv_sec; \ _jnode->stat_atime = (time_t) tv.tv_sec; \
} while (0) } while (0)
#define IMFS_update_mtime( _jnode ) \ #define IMFS_update_mtime( _jnode ) \
do { \ do { \
struct timeval tv; \ struct timeval tv; \
gettimeofday( &tv, 0 ); \ gettimeofday( &tv, 0 ); \
_jnode->st_mtime = (time_t) tv.tv_sec; \ _jnode->stat_mtime = (time_t) tv.tv_sec; \
} while (0) } while (0)
#define IMFS_update_ctime( _jnode ) \ #define IMFS_update_ctime( _jnode ) \
do { \ do { \
struct timeval tv; \ struct timeval tv; \
gettimeofday( &tv, 0 ); \ gettimeofday( &tv, 0 ); \
_jnode->st_ctime = (time_t) tv.tv_sec; \ _jnode->stat_ctime = (time_t) tv.tv_sec; \
} while (0) } while (0)
#define IMFS_atime_mtime_update( _jnode ) \ #define IMFS_atime_mtime_update( _jnode ) \
do { \ do { \
struct timeval tv; \ struct timeval tv; \
gettimeofday( &tv, 0 ); \ gettimeofday( &tv, 0 ); \
_jnode->st_mtime = (time_t) tv.tv_sec; \ _jnode->stat_mtime = (time_t) tv.tv_sec; \
_jnode->st_atime = (time_t) tv.tv_sec; \ _jnode->stat_atime = (time_t) tv.tv_sec; \
} while (0) } while (0)
typedef struct { typedef struct {

View File

@@ -72,9 +72,9 @@ IMFS_jnode_t *IMFS_create_node(
gettimeofday( &tv, 0 ); gettimeofday( &tv, 0 );
node->st_atime = (time_t) tv.tv_sec; node->stat_atime = (time_t) tv.tv_sec;
node->st_mtime = (time_t) tv.tv_sec; node->stat_mtime = (time_t) tv.tv_sec;
node->st_ctime = (time_t) tv.tv_sec; node->stat_ctime = (time_t) tv.tv_sec;
/* /*
* Set the type specific information * Set the type specific information

View File

@@ -219,9 +219,9 @@ int imfs_dir_lseek(
* dirent structure * dirent structure
* st_blksize 0 * st_blksize 0
* st_blocks 0 * st_blocks 0
* st_atime time of last access * stat_atime time of last access
* st_mtime time of last modification * stat_mtime time of last modification
* st_ctime time of the last change * stat_ctime time of the last change
* *
* This information will be returned to the calling function in a -stat- struct * 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_rdev = 0ll;
buf->st_blksize = 0; buf->st_blksize = 0;
buf->st_blocks = 0; buf->st_blocks = 0;
buf->st_atime = the_jnode->st_atime; buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->st_mtime; buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->st_ctime; buf->st_ctime = the_jnode->stat_ctime;
buf->st_size = 0; buf->st_size = 0;

View File

@@ -50,9 +50,9 @@ int IMFS_stat(
buf->st_uid = the_jnode->st_uid; buf->st_uid = the_jnode->st_uid;
buf->st_gid = the_jnode->st_gid; buf->st_gid = the_jnode->st_gid;
buf->st_atime = the_jnode->st_atime; buf->st_atime = the_jnode->stat_atime;
buf->st_mtime = the_jnode->st_mtime; buf->st_mtime = the_jnode->stat_mtime;
buf->st_ctime = the_jnode->st_ctime; buf->st_ctime = the_jnode->stat_ctime;
return 0; return 0;
} }

View File

@@ -30,8 +30,8 @@ int IMFS_utime(
the_jnode = (IMFS_jnode_t *) pathloc->node_access; the_jnode = (IMFS_jnode_t *) pathloc->node_access;
the_jnode->st_atime = actime; the_jnode->stat_atime = actime;
the_jnode->st_mtime = modtime; the_jnode->stat_mtime = modtime;
return 0; return 0;
} }

View File

@@ -9,7 +9,7 @@ SUBDIRS = include arpa kern machine sys vm lib libc net netinet nfs rtems \
rtems_servers pppd rtems_webserver wrapup rtems_servers pppd rtems_webserver wrapup
EXTRA_DIST = CHANGELOG bpfilter.h loop.h netdb.h opt_ipfw.h opt_mrouting.h \ 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/subdirs.am
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -4,6 +4,18 @@
AUTOMAKE_OPTIONS = foreign 1.4 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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -111,7 +111,7 @@ rtems_bsdnet_synchronize_ntp (int interval, rtems_task_priority priority)
printf ("Can't set socket receive timeout: %s", strerror (errno)); printf ("Can't set socket receive timeout: %s", strerror (errno));
return -1; return -1;
} }
memset (&myAddr, sizeof myAddr, 0); memset (&myAddr, 0, sizeof myAddr);
myAddr.sin_family = AF_INET; myAddr.sin_family = AF_INET;
myAddr.sin_port = htons (123); myAddr.sin_port = htons (123);
myAddr.sin_addr.s_addr = htonl (INADDR_ANY); 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. * server out there somewhere.
*/ */
if (rtems_bsdnet_ntpserver_count > 0) { if (rtems_bsdnet_ntpserver_count > 0) {
memset (&farAddr, sizeof farAddr, 0); memset (&farAddr, 0, sizeof farAddr);
farAddr.sin_family = AF_INET; farAddr.sin_family = AF_INET;
farAddr.sin_port = htons (123); farAddr.sin_port = htons (123);
/* /*
* For now, try only the first server. * For now, try only the first server.
*/ */
farAddr.sin_addr = rtems_bsdnet_ntpserver[0]; 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 */ packet.li_vn_mode = (3 << 3) | 3; /* NTP version 3, client */
i = sendto (s, &packet, sizeof packet, 0, (struct sockaddr *)&farAddr, sizeof farAddr); i = sendto (s, &packet, sizeof packet, 0, (struct sockaddr *)&farAddr, sizeof farAddr);
if (i != sizeof packet) { if (i != sizeof packet) {

View File

@@ -7,14 +7,15 @@ AUTOMAKE_OPTIONS = foreign 1.4 no-installman
LIBNAME = lib.a LIBNAME = lib.a
LIB = $(ARCH)/$(LIBNAME) LIB = $(ARCH)/$(LIBNAME)
C_FILES = base64.c gethostbydns.c gethostbyht.c gethostbynis.c \ C_FILES = addr2ascii.c ascii2addr.c base64.c gethostbydns.c gethostbyht.c \
gethostnamadr.c getnetbydns.c getnetbyht.c getnetbynis.c getnetnamadr.c \ gethostbynis.c gethostnamadr.c getnetbydns.c getnetbyht.c getnetbynis.c \
getproto.c getprotoent.c getprotoname.c getservbyname.c getservbyport.c \ getnetnamadr.c getproto.c getprotoent.c getprotoname.c getservbyname.c \
getservent.c herror.c inet_addr.c inet_lnaof.c inet_makeaddr.c \ getservbyport.c getservent.c herror.c inet_addr.c inet_lnaof.c \
inet_network.c inet_ntoa.c inet_ntop.c inet_pton.c map_v4v6.c \ inet_makeaddr.c inet_netof.c inet_network.c inet_ntoa.c inet_ntop.c \
nsap_addr.c ns_name.c ns_netint.c ns_parse.c ns_print.c ns_ttl.c \ inet_pton.c linkaddr.c map_v4v6.c nsap_addr.c ns_name.c ns_netint.c \
res_comp.c res_data.c res_debug.c res_init.c res_mkquery.c \ ns_parse.c ns_print.c ns_ttl.c res_comp.c res_data.c res_debug.c \
res_mkupdate.c res_query.c res_send.c res_stubs.c res_update.c strsep.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) C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
OBJS = $(C_O_FILES) 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 += # Add local stuff here using +=
# #
AM_CPPFLAGS += -DNOPOLL -DNOSELECT AM_CPPFLAGS += -DNOPOLL -DNOSELECT -U__STRICT_ANSI__
AM_CPPFLAGS += -U__STRICT_ANSI__
$(LIB): $(OBJS) $(LIB): $(OBJS)
$(make-library) $(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 \ getprotoent.c getprotoname.c getservbyname.c getservbyport.c \
getservent.3 getservent.c herror.c inet.3 inet_addr.c inet_lnaof.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_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 \ 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 \ 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 \ recv.c res_comp.c res_config.h res_data.c res_debug.c res_init.c \

View File

@@ -4,7 +4,20 @@
AUTOMAKE_OPTIONS = foreign 1.4 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 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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -0,0 +1,5 @@
/*
* Dummy include file for FreeBSD routines
*/
#include <string.h>

View File

@@ -26,12 +26,24 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
$(LIB): $(OBJS) $(LIB): $(OBJS)
$(make-library) $(make-library)
all-local: $(ARCH) $(OBJS) $(LIB) all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
.PRECIOUS: $(LIB) .PRECIOUS: $(LIB)
EXTRA_DIST = bpf.h ethernet.h if.c if.h if_arp.h if_dl.h if_ethersubr.c \ EXTRA_DIST = if.c if_ethersubr.c if_loop.c \
if_llc.h if_loop.c if_ppp.h if_types.h netisr.h ppp-comp.h ppp_defs.h \ radix.c raw_cb.c raw_usrreq.c route.c rtsock.c
radix.c radix.h raw_cb.c raw_cb.h raw_usrreq.c route.c route.h 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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -118,6 +118,7 @@ rtems_bsdnet_loopattach(dummy)
ifp->if_type = IFT_LOOP; ifp->if_type = IFT_LOOP;
ifp->if_hdrlen = 0; ifp->if_hdrlen = 0;
ifp->if_addrlen = 0; ifp->if_addrlen = 0;
ifp->if_snd.ifq_maxlen = ifqmaxlen;
if_attach(ifp); if_attach(ifp);
#if NBPFILTER > 0 #if NBPFILTER > 0
bpfattach(ifp, DLT_NULL, sizeof(u_int)); bpfattach(ifp, DLT_NULL, sizeof(u_int));

View File

@@ -28,16 +28,30 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
$(LIB): $(OBJS) $(LIB): $(OBJS)
$(make-library) $(make-library)
all-local: $(ARCH) $(OBJS) $(LIB) all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
.PRECIOUS: $(LIB) .PRECIOUS: $(LIB)
EXTRA_DIST = icmp_var.h if_ether.c if_ether.h igmp.c igmp.h igmp_var.h in.c \ EXTRA_DIST = if_ether.c igmp.c igmp_var.h in.c in_cksum.c in_cksum_i386.c \
in.h in_cksum.c in_cksum_i386.c in_cksum_m68k.c in_cksum_powerpc.c \ in_cksum_m68k.c in_cksum_powerpc.c in_pcb.c in_proto.c in_rmx.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_icmp.c ip_input.c ip_mroute.c ip_output.c \
ip_divert.c ip_fw.c ip_fw.h ip_icmp.c ip_icmp.h ip_input.c ip_mroute.c \ raw_ip.c tcp_debug.c tcp_input.c tcp_output.c tcp_subr.c tcp_timer.c \
ip_mroute.h ip_output.c ip_var.h raw_ip.c tcp.h tcp_debug.c tcp_debug.h \ tcp_usrreq.c udp_usrreq.c
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 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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -255,6 +255,9 @@ struct in_addr {
#define INADDR_MAX_LOCAL_GROUP (u_long)0xe00000ff /* 224.0.0.255 */ #define INADDR_MAX_LOCAL_GROUP (u_long)0xe00000ff /* 224.0.0.255 */
#define IN_LOOPBACKNET 127 /* official! */ #define IN_LOOPBACKNET 127 /* official! */
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK (u_long)0x7F000001 /* 127.0.0.1 */
#endif
/* /*
* Socket address, internet style. * Socket address, internet style.

View File

@@ -25,11 +25,23 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
$(LIB): $(OBJS) $(LIB): $(OBJS)
$(make-library) $(make-library)
all-local: $(ARCH) $(OBJS) $(LIB) all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
.PRECIOUS: $(LIB) .PRECIOUS: $(LIB)
EXTRA_DIST = bootp_subr.c krpc.h nfs.h nfsdiskless.h nfsproto.h rpcv2.h \ EXTRA_DIST = bootp_subr.c
xdr_subs.h
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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -15,6 +15,19 @@ C_O_FILES = $(C_FILES:%.c=$(ARCH)/%.o)
OBJS = $(C_O_FILES) 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 $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(top_srcdir)/../../../automake/lib.am include $(top_srcdir)/../../../automake/lib.am
@@ -28,14 +41,12 @@ AM_CPPFLAGS += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS -DDIAGNOSTIC \
$(LIB): $(OBJS) $(LIB): $(OBJS)
$(make-library) $(make-library)
all-local: $(ARCH) $(OBJS) $(LIB) all-local: $(PREINSTALL_FILES) $(ARCH) $(OBJS) $(LIB)
.PRECIOUS: $(LIB) .PRECIOUS: $(LIB)
EXTRA_DIST = issetugid.c rtems_bootp.c rtems_bsdnet.h \ EXTRA_DIST = issetugid.c rtems_bootp.c rtems_glue.c rtems_select.c rtems_showicmpstat.c \
rtems_bsdnet_internal.h rtems_glue.c rtems_select.c rtems_showicmpstat.c \
rtems_showifstat.c rtems_showipstat.c rtems_showmbuf.c rtems_showroute.c \ rtems_showifstat.c rtems_showipstat.c rtems_showmbuf.c rtems_showroute.c \
rtems_showtcpstat.c rtems_showudpstat.c rtems_syscall.c sghostname.c \ rtems_showtcpstat.c rtems_showudpstat.c rtems_syscall.c sghostname.c
tftp.h
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -136,11 +136,8 @@ connect (int s, struct sockaddr *name, int namelen)
return -1; return -1;
} }
error = soconnect (so, nam); error = soconnect (so, nam);
if (error) { if (error)
errno = error; goto bad;
rtems_bsdnet_semaphore_release ();
return -1;
}
if ((so->so_state & SS_NBIO) && (so->so_state & SS_ISCONNECTING)) { if ((so->so_state & SS_NBIO) && (so->so_state & SS_ISCONNECTING)) {
m_freem(nam); m_freem(nam);
errno = EINPROGRESS; errno = EINPROGRESS;
@@ -148,15 +145,20 @@ connect (int s, struct sockaddr *name, int namelen)
return -1; return -1;
} }
while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) { while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {
so->so_error = soconnsleep (so); error = soconnsleep (so);
if (error)
break;
} }
if (error == 0) { if (error == 0) {
error = so->so_error; error = so->so_error;
so->so_error = 0; so->so_error = 0;
} }
bad:
so->so_state &= ~SS_ISCONNECTING; so->so_state &= ~SS_ISCONNECTING;
m_freem (nam); m_freem (nam);
if (error == 0) if (error)
errno = error;
else
ret = 0; ret = 0;
rtems_bsdnet_semaphore_release (); rtems_bsdnet_semaphore_release ();
return ret; return ret;
@@ -605,6 +607,7 @@ getpeersockname (int s, struct sockaddr *name, int *namelen, int pflag)
else else
error = (*so->so_proto->pr_usrreqs->pru_sockaddr)(so, m); error = (*so->so_proto->pr_usrreqs->pru_sockaddr)(so, m);
if (error) { if (error) {
m_freem(m);
errno = error; errno = error;
rtems_bsdnet_semaphore_release (); rtems_bsdnet_semaphore_release ();
return -1; return -1;

View File

@@ -4,10 +4,22 @@
AUTOMAKE_OPTIONS = foreign 1.4 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 \ 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 \ 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 \ 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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -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_ */

View File

@@ -4,6 +4,19 @@
AUTOMAKE_OPTIONS = foreign 1.4 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 include $(top_srcdir)/../../../automake/local.am

View File

@@ -7,5 +7,7 @@ ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
SUBDIRS = include src SUBDIRS = include src
EXTRA_DIST = README_RTEMS
include $(top_srcdir)/../../../automake/subdirs.am include $(top_srcdir)/../../../automake/subdirs.am
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -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

View File

@@ -4,7 +4,7 @@
AUTOMAKE_OPTIONS = foreign 1.4 AUTOMAKE_OPTIONS = foreign 1.4
SUBDIRS = rpc SUBDIRS = rpc rpcsvc
include $(top_srcdir)/../../../automake/subdirs.am include $(top_srcdir)/../../../automake/subdirs.am
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -4,14 +4,15 @@
AUTOMAKE_OPTIONS = foreign 1.4 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) noinst_HEADERS = $(H_FILES)
if HAS_NETWORKING if HAS_NETWORKING
PREINSTALL_FILES = \ PREINSTALL_FILES += $(PROJECT_INCLUDE)/rpc \
$(PROJECT_INCLUDE)/rpc \ $(H_FILES:%=$(PROJECT_INCLUDE)/rpc/%)
$(H_FILES:%=$(PROJECT_INCLUDE)/rpc/%)
$(PROJECT_INCLUDE)/rpc: $(PROJECT_INCLUDE)/rpc:
@$(mkinstalldirs) $@ @$(mkinstalldirs) $@
@@ -19,8 +20,6 @@ $(PROJECT_INCLUDE)/rpc/%.h: %.h
$(INSTALL_DATA) $< $@ $(INSTALL_DATA) $< $@
endif endif
all-am: $(PREINSTALL_FILES) all-local: $(PREINSTALL_FILES)
debug-am: $(PREINSTALL_FILES)
profile-am: $(PREINSTALL_FILES)
include $(top_srcdir)/../../../automake/local.am include $(top_srcdir)/../../../automake/local.am

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,6 +25,10 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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". * "sessions".
*/ */
#ifndef _RPC_AUTH_H
#define _RPC_AUTH_H
#include <sys/cdefs.h>
#include <sys/socket.h>
#define MAX_AUTH_BYTES 400 #define MAX_AUTH_BYTES 400
#define MAXNETNAMELEN 255 /* maximum length of network user's name */ #define MAXNETNAMELEN 255 /* maximum length of network user's name */
@@ -67,13 +71,15 @@ enum auth_stat {
union des_block { union des_block {
struct { struct {
u_int32 high; u_int32_t high;
u_int32 low; u_int32_t low;
} key; } key;
char c[8]; char c[8];
}; };
typedef union des_block des_block; 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. * Authentication info. Opaque to client.
@@ -83,21 +89,29 @@ struct opaque_auth {
caddr_t oa_base; /* address of more auth stuff */ caddr_t oa_base; /* address of more auth stuff */
u_int oa_length; /* not to exceed MAX_AUTH_BYTES */ 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. * Auth handle, interface to client side authenticators.
*/ */
typedef struct { typedef struct __rpc_auth {
struct opaque_auth ah_cred; struct opaque_auth ah_cred;
struct opaque_auth ah_verf; struct opaque_auth ah_verf;
union des_block ah_key; union des_block ah_key;
struct auth_ops { struct auth_ops {
void (*ah_nextverf)(); void (*ah_nextverf) __P((struct __rpc_auth *));
int (*ah_marshal)(); /* nextverf & serialize */ /* nextverf & serialize */
int (*ah_validate)(); /* validate varifier */ int (*ah_marshal) __P((struct __rpc_auth *, XDR *));
int (*ah_refresh)(); /* refresh credentials */ /* validate verifier */
void (*ah_destroy)(); /* destroy this structure */ 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; } *ah_ops;
caddr_t ah_private; caddr_t ah_private;
} AUTH; } AUTH;
@@ -139,7 +153,6 @@ typedef struct {
extern struct opaque_auth _null_auth; extern struct opaque_auth _null_auth;
/* /*
* These are the various implementations of client side authenticators. * These are the various implementations of client side authenticators.
*/ */
@@ -153,15 +166,95 @@ extern struct opaque_auth _null_auth;
* int len; * int len;
* int *aup_gids; * int *aup_gids;
*/ */
extern AUTH *authunix_create(); __BEGIN_DECLS
extern AUTH *authunix_create_default(); /* takes no parameters */ struct sockaddr_in;
extern AUTH *authnone_create(); /* takes no parameters */ extern AUTH *authunix_create __P((char *, int, int, int, int *));
extern AUTH *authdes_create(); 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_NONE 0 /* no authentication */
#define AUTH_NULL 0 /* backward compatibility */ #define AUTH_NULL 0 /* backward compatibility */
#define AUTH_UNIX 1 /* unix style (uid, gids) */ #define AUTH_UNIX 1 /* unix style (uid, gids) */
#define AUTH_SYS 1 /* forward compatibility */
#define AUTH_SHORT 2 /* short hand unix style */ #define AUTH_SHORT 2 /* short hand unix style */
#define AUTH_DES 3 /* des style (encrypted timestamps) */ #define AUTH_DES 3 /* des style (encrypted timestamps) */
#endif /* RPC_AUTH_H */ #endif /* !_RPC_AUTH_H */

View File

@@ -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_ */

View File

@@ -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 */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,6 +25,10 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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. * Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#ifndef _CLNT_ #ifndef _RPC_CLNT_H_
#define _CLNT_ #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, * Rpc calls return an enum clnt_stat. This should be looked at more,
@@ -90,15 +92,15 @@ enum clnt_stat {
struct rpc_err { struct rpc_err {
enum clnt_stat re_status; enum clnt_stat re_status;
union { union {
int RE_errno; /* realated system error */ int RE_errno; /* related system error */
enum auth_stat RE_why; /* why the auth error occurred */ enum auth_stat RE_why; /* why the auth error occurred */
struct { struct {
u_long low; /* lowest verion supported */ u_int32_t low; /* lowest verion supported */
u_long high; /* highest verion supported */ u_int32_t high; /* highest verion supported */
} RE_vers; } RE_vers;
struct { /* maybe meaningful if RPC_FAILED */ struct { /* maybe meaningful if RPC_FAILED */
long s1; int32_t s1;
long s2; int32_t s2;
} RE_lb; /* life boot & debugging only */ } RE_lb; /* life boot & debugging only */
} ru; } ru;
#define re_errno ru.RE_errno #define re_errno ru.RE_errno
@@ -113,15 +115,26 @@ struct rpc_err {
* Created by individual implementations, see e.g. rpc_udp.c. * Created by individual implementations, see e.g. rpc_udp.c.
* Client is responsible for initializing auth, see e.g. auth_none.c. * Client is responsible for initializing auth, see e.g. auth_none.c.
*/ */
typedef struct { typedef struct __rpc_client {
AUTH *cl_auth; /* authenticator */ AUTH *cl_auth; /* authenticator */
struct clnt_ops { struct clnt_ops {
enum clnt_stat (*cl_call)(); /* call remote procedure */ /* call remote procedure */
void (*cl_abort)(); /* abort a call */ enum clnt_stat (*cl_call) __P((struct __rpc_client *,
void (*cl_geterr)(); /* get specific error code */ u_long, xdrproc_t, caddr_t, xdrproc_t,
bool_t (*cl_freeres)(); /* frees results */ caddr_t, struct timeval));
void (*cl_destroy)();/* destroy this structure */ /* abort a call */
bool_t (*cl_control)();/* the ioctl() of rpc */ 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; } *cl_ops;
caddr_t cl_private; /* private stuff */ caddr_t cl_private; /* private stuff */
} CLIENT; } CLIENT;
@@ -146,9 +159,11 @@ typedef struct {
* struct timeval timeout; * struct timeval timeout;
*/ */
#define CLNT_CALL(rh, proc, xargs, argsp, xres, 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))
#define clnt_call(rh, proc, xargs, argsp, xres, 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 * void
@@ -188,17 +203,42 @@ typedef struct {
#define clnt_control(cl,rq,in) ((*(cl)->cl_ops->cl_control)(cl,rq,in)) #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 CLSET_TIMEOUT 1 /* set timeout (timeval) */
#define CLGET_TIMEOUT 2 /* get timeout (timeval) */ #define CLGET_TIMEOUT 2 /* get timeout (timeval) */
#define CLGET_SERVER_ADDR 3 /* get server's address (sockaddr) */ #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 * udp only control operations
*/ */
#define CLSET_RETRY_TIMEOUT 4 /* set retry timeout (timeval) */ #define CLSET_RETRY_TIMEOUT 4 /* set retry timeout (timeval) */
#define CLGET_RETRY_TIMEOUT 5 /* get 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 * void
* CLNT_DESTROY(rh); * 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, * transport/port. It is used for testing, performance evaluation,
* and network administration. * and network administration.
*/ */
@@ -238,21 +278,24 @@ typedef struct {
* u_long prog; * u_long prog;
* u_long vers; * 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 * __BEGIN_DECLS
clnt_create(/*host, prog, vers, prot*/); /* extern CLIENT *clnt_create __P((char *, u_long, u_long, char *));
char *host; -- hostname __END_DECLS
u_long prog; -- program number
u_long vers; -- version number
char *prot; -- protocol
*/
/* /*
@@ -266,7 +309,15 @@ clnt_create(/*host, prog, vers, prot*/); /*
* u_int sendsz; * u_int sendsz;
* u_int recvsz; * 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. * UDP based rpc.
@@ -289,25 +340,67 @@ extern CLIENT *clnttcp_create();
* u_int sendsz; * u_int sendsz;
* u_int recvsz; * u_int recvsz;
*/ */
extern CLIENT *clntudp_create(); __BEGIN_DECLS
extern CLIENT *clntudp_bufcreate(); 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 * Print why creation failed
*/ */
void clnt_pcreateerror(/* char *msg */); /* stderr */ __BEGIN_DECLS
char *clnt_spcreateerror(/* char *msg */); /* string */ 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 * 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 * Print an English error message, given the client error code
*/ */
void clnt_perror(/* CLIENT *clnt, char *msg */); /* stderr */ __BEGIN_DECLS
char *clnt_sperror(/* CLIENT *clnt, char *msg */); /* string */ 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. * 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; 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 UDPMSGSIZE 8800 /* rpc imposed limit on udp msg size */
#define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */ #define RPCSMALLMSGSIZE 400 /* a more reasonable packet size */
#endif /*!_CLNT_*/ #endif /* !_RPC_CLNT_H */
#endif /* RPC_CLNT_H */

View File

@@ -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 * ));

View File

@@ -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

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,6 +25,10 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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. * Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#ifndef __RPC_HEADER__ #ifndef _RPC_RPC_H
#define __RPC_HEADER__ #define _RPC_RPC_H
#include <rpc/types.h> /* some typedefs */ #include <rpc/types.h> /* some typedefs */
#include <netinet/in.h> #include <netinet/in.h>
#include <sys/socket.h>
/* external data representation interfaces */ /* external data representation interfaces */
#include <rpc/xdr.h> /* generic (de)serializer */ #include <rpc/xdr.h> /* generic (de)serializer */
@@ -55,12 +54,12 @@
/* semi-private protocol headers */ /* semi-private protocol headers */
#include <rpc/rpc_msg.h> /* protocol for rpc messages */ #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 * Uncomment-out the next line if you are building the rpc library with
* DES Authentication (see the README file in the secure_rpc/ directory). * 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 */ /* Server side only remote procedure callee */
#include <rpc/svc.h> /* service manager and multiplexer */ #include <rpc/svc.h> /* service manager and multiplexer */
@@ -79,8 +78,60 @@ struct rpcent {
int r_number; /* rpc program number */ 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 */

View File

@@ -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 */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,8 +25,11 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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 * rpc_msg.h
@@ -39,6 +38,9 @@
* Copyright (C) 1984, Sun Microsystems, Inc. * Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#ifndef _RPC_RPCMSG_H
#define _RPC_RPCMSG_H
#define RPC_MSG_VERSION ((u_long) 2) #define RPC_MSG_VERSION ((u_long) 2)
#define RPC_SERVICE_PORT ((u_short) 2048) #define RPC_SERVICE_PORT ((u_short) 2048)
@@ -86,8 +88,8 @@ struct accepted_reply {
enum accept_stat ar_stat; enum accept_stat ar_stat;
union { union {
struct { struct {
u_long low; u_int32_t low;
u_long high; u_int32_t high;
} AR_versions; } AR_versions;
struct { struct {
caddr_t where; caddr_t where;
@@ -106,8 +108,8 @@ struct rejected_reply {
enum reject_stat rj_stat; enum reject_stat rj_stat;
union { union {
struct { struct {
u_long low; u_int32_t low;
u_long high; u_int32_t high;
} RJ_versions; } RJ_versions;
enum auth_stat RJ_why; /* why authentication did not work */ enum auth_stat RJ_why; /* why authentication did not work */
} ru; } ru;
@@ -132,10 +134,10 @@ struct reply_body {
* Body of an rpc request call. * Body of an rpc request call.
*/ */
struct call_body { struct call_body {
u_long cb_rpcvers; /* must be equal to two */ u_int32_t cb_rpcvers; /* must be equal to two */
u_long cb_prog; u_int32_t cb_prog;
u_long cb_vers; u_int32_t cb_vers;
u_long cb_proc; u_int32_t cb_proc;
struct opaque_auth cb_cred; struct opaque_auth cb_cred;
struct opaque_auth cb_verf; /* protocol specific - provided by client */ struct opaque_auth cb_verf; /* protocol specific - provided by client */
}; };
@@ -144,7 +146,7 @@ struct call_body {
* The rpc message * The rpc message
*/ */
struct rpc_msg { struct rpc_msg {
u_long rm_xid; u_int32_t rm_xid;
enum msg_type rm_direction; enum msg_type rm_direction;
union { union {
struct call_body RM_cmb; struct call_body RM_cmb;
@@ -156,14 +158,14 @@ struct rpc_msg {
#define acpted_rply ru.RM_rmb.ru.RP_ar #define acpted_rply ru.RM_rmb.ru.RP_ar
#define rjcted_rply ru.RM_rmb.ru.RP_dr #define rjcted_rply ru.RM_rmb.ru.RP_dr
__BEGIN_DECLS
/* /*
* XDR routine to handle a rpc message. * XDR routine to handle a rpc message.
* xdr_callmsg(xdrs, cmsg) * xdr_callmsg(xdrs, cmsg)
* XDR *xdrs; * XDR *xdrs;
* struct rpc_msg *cmsg; * 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. * XDR routine to pre-serialize the static part of a rpc message.
@@ -171,7 +173,7 @@ extern bool_t xdr_callmsg();
* XDR *xdrs; * XDR *xdrs;
* struct rpc_msg *cmsg; * 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. * XDR routine to handle a rpc reply.
@@ -179,7 +181,7 @@ extern bool_t xdr_callhdr();
* XDR *xdrs; * XDR *xdrs;
* struct rpc_msg *rmsg; * 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. * Fills in the error part of a reply message.
@@ -187,6 +189,8 @@ extern bool_t xdr_replymsg();
* struct rpc_msg *msg; * struct rpc_msg *msg;
* struct rpc_err *error; * 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 */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -12,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -30,6 +25,10 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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. * Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#ifndef __SVC_HEADER__ #ifndef _RPC_SVC_H
#define __SVC_HEADER__ #define _RPC_SVC_H
#include <sys/cdefs.h>
/* /*
* This interface must manage two items concerning remote procedure calling: * This interface must manage two items concerning remote procedure calling:
@@ -69,19 +69,31 @@ enum xprt_stat {
XPRT_IDLE XPRT_IDLE
}; };
struct rpc_msg;
/* /*
* Server side transport handle * Server side transport handle
*/ */
typedef struct { typedef struct __rpc_svcxprt {
int xp_sock; int xp_sock;
u_short xp_port; /* associated port number */ u_short xp_port; /* associated port number */
struct xp_ops { struct xp_ops {
bool_t (*xp_recv)(); /* receive incomming requests */ /* receive incoming requests */
enum xprt_stat (*xp_stat)(); /* get transport status */ bool_t (*xp_recv) __P((struct __rpc_svcxprt *,
bool_t (*xp_getargs)(); /* get arguments */ struct rpc_msg *));
bool_t (*xp_reply)(); /* send reply */ /* get transport status */
bool_t (*xp_freeargs)();/* free mem allocated for args */ enum xprt_stat (*xp_stat) __P((struct __rpc_svcxprt *));
void (*xp_destroy)(); /* destroy this struct */ /* 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; } *xp_ops;
int xp_addrlen; /* length of remote address */ int xp_addrlen; /* length of remote address */
struct sockaddr_in xp_raddr; /* remote address */ struct sockaddr_in xp_raddr; /* remote address */
@@ -138,9 +150,9 @@ typedef struct {
* Service request * Service request
*/ */
struct svc_req { struct svc_req {
u_long rq_prog; /* service program number */ u_int32_t rq_prog; /* service program number */
u_long rq_vers; /* service protocol version */ u_int32_t rq_vers; /* service protocol version */
u_long rq_proc; /* the desired procedure */ u_int32_t rq_proc; /* the desired procedure */
struct opaque_auth rq_cred; /* raw creds from the wire */ struct opaque_auth rq_cred; /* raw creds from the wire */
caddr_t rq_clntcred; /* read only cooked cred */ caddr_t rq_clntcred; /* read only cooked cred */
SVCXPRT *rq_xprt; /* associated transport */ SVCXPRT *rq_xprt; /* associated transport */
@@ -157,7 +169,10 @@ struct svc_req {
* void (*dispatch)(); * void (*dispatch)();
* int protocol; (like TCP or UDP, zero means do not register) * 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 * Service un-registration
@@ -166,7 +181,9 @@ extern bool_t svc_register();
* u_long prog; * u_long prog;
* u_long vers; * u_long vers;
*/ */
extern void svc_unregister(); __BEGIN_DECLS
extern void svc_unregister __P((u_long, u_long));
__END_DECLS
/* /*
* Transport registration. * Transport registration.
@@ -174,7 +191,9 @@ extern void svc_unregister();
* xprt_register(xprt) * xprt_register(xprt)
* SVCXPRT *xprt; * SVCXPRT *xprt;
*/ */
extern void xprt_register(); __BEGIN_DECLS
extern void xprt_register __P((SVCXPRT *));
__END_DECLS
/* /*
* Transport un-register * Transport un-register
@@ -182,7 +201,9 @@ extern void xprt_register();
* xprt_unregister(xprt) * xprt_unregister(xprt)
* SVCXPRT *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! * deadlock the caller and server processes!
*/ */
extern bool_t svc_sendreply(); __BEGIN_DECLS
extern void svcerr_decode(); extern bool_t svc_sendreply __P((SVCXPRT *, xdrproc_t, char *));
extern void svcerr_weakauth(); extern void svcerr_decode __P((SVCXPRT *));
extern void svcerr_noproc(); extern void svcerr_weakauth __P((SVCXPRT *));
extern void svcerr_progvers(); extern void svcerr_noproc __P((SVCXPRT *));
extern void svcerr_auth(); extern void svcerr_progvers __P((SVCXPRT *, u_long, u_long));
extern void svcerr_noprog(); extern void svcerr_auth __P((SVCXPRT *, enum auth_stat));
extern void svcerr_systemerr(); extern void svcerr_noprog __P((SVCXPRT *));
extern void svcerr_systemerr __P((SVCXPRT *));
__END_DECLS
/* /*
* Lowest level dispatching -OR- who owns this process anyway. * 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 * Global keeper of rpc service descriptors in use
* dynamic; must be inspected before each call to select * dynamic; must be inspected before each call to select
*/ */
#ifdef FD_SETSIZE extern int svc_maxfd;
extern fd_set svc_fdset; extern fd_set svc_fdset;
#define svc_fds svc_fdset.fds_bits[0] /* compatibility */ #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; * a small program implemented by the svc_rpc implementation itself;
* also see clnt.h for protocol numbers. * also see clnt.h for protocol numbers.
*/ */
extern void rpctest_service(); extern void rpctest_service();
#endif
extern void svc_getreq(); __BEGIN_DECLS
extern void svc_getreqset(); /* takes fdset instead of int */ extern void svc_getreq __P((int));
extern void svc_run(); /* never returns */ 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 * 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. * Memory based rpc for testing and timing.
*/ */
extern SVCXPRT *svcraw_create(); __BEGIN_DECLS
extern SVCXPRT *svcraw_create __P((void));
__END_DECLS
/* /*
* Udp based rpc. * Udp based rpc.
*/ */
extern SVCXPRT *svcudp_create(); __BEGIN_DECLS
extern SVCXPRT *svcudp_bufcreate(); extern SVCXPRT *svcudp_create __P((int));
extern int svcudp_enablecache(SVCXPRT *transp, u_long size); extern SVCXPRT *svcudp_bufcreate __P((int, u_int, u_int));
__END_DECLS
/* /*
* Tcp based rpc. * 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 /* !_RPC_SVC_H */
#endif /* !__SVC_HEADER__ */
extern int _rpcsvccount;
extern int _rpcsvcstate;
extern int _SERVED;
#endif /* RPC_SVC_H */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,8 +25,11 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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. * svc_auth.h, Service side of rpc authentication.
@@ -38,10 +37,20 @@
* Copyright (C) 1984, Sun Microsystems, Inc. * Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#ifndef _RPC_SVCAUTH_H
#define _RPC_SVCAUTH_H
struct rpc_msg;
struct svc_req;
/* /*
* Server side authenticator * 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 */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,32 +25,32 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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> * Rpc additions to <sys/types.h>
*/ */
#ifndef __TYPES_RPC_HEADER__ #ifndef _RPC_TYPES_H
#define __TYPES_RPC_HEADER__ #define _RPC_TYPES_H
/*#include <network/types.h>*/ #define bool_t int32_t
typedef unsigned long u_int32; /* 32-bit unsigned integers */ #define enum_t int32_t
#define __dontcare__ -1
#define bool_t int
#define enum_t int
#ifndef FALSE #ifndef FALSE
# define FALSE (0) # define FALSE (0)
#endif #endif
#ifndef TRUE #ifndef TRUE
# define TRUE (1) # define TRUE (1)
#endif #endif
#define __dontcare__ -1
#ifndef NULL #ifndef NULL
# define NULL 0 # define NULL 0
#endif #endif
void *malloc();
#define mem_alloc(bsize) malloc(bsize) #define mem_alloc(bsize) malloc(bsize)
#define mem_free(ptr, bsize) free(ptr) #define mem_free(ptr, bsize) free(ptr)
@@ -63,13 +59,4 @@ void *malloc();
#endif #endif
#include <sys/time.h> #include <sys/time.h>
#ifndef INADDR_LOOPBACK #endif /* !_RPC_TYPES_H */
#define INADDR_LOOPBACK (u_long)0x7F000001
#endif
#ifndef MAXHOSTNAMELEN
#define MAXHOSTNAMELEN 64
#endif
#endif /* ndef __TYPES_RPC_HEADER__ */
#endif /* RPC_TYPES_H */

View File

@@ -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 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@@ -11,7 +7,7 @@
* program developed by the user. * program developed by the user.
* *
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * 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. * 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 * Sun RPC is provided with no support and without any obligation on the
@@ -29,8 +25,11 @@
* Sun Microsystems, Inc. * Sun Microsystems, Inc.
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * 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. * xdr.h, External Data Representation Serialization Routines.
@@ -38,8 +37,9 @@
* Copyright (C) 1984, Sun Microsystems, Inc. * Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#ifndef __XDR_HEADER__ #ifndef _RPC_XDR_H
#define __XDR_HEADER__ #define _RPC_XDR_H
#include <sys/cdefs.h>
/* /*
* XDR provides a conventional way for converting between C data * 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) \ #define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \
* 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. * The XDR handle.
* Contains operation which is being applied to the stream, * Contains operation which is being applied to the stream,
* an operations vector for the paticular implementation (e.g. see xdr_mem.c), * an operations vector for the particular implementation (e.g. see xdr_mem.c),
* and two private fields for the use of the particular impelementation. * 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 */ enum xdr_op x_op; /* operation; fast additional param */
struct xdr_ops { struct xdr_ops {
bool_t (*x_getlong)(); /* get a long from underlying stream */ /* get a long from underlying stream */
bool_t (*x_putlong)(); /* put a long to " */ bool_t (*x_getlong) __P((struct __rpc_xdr *, long *));
bool_t (*x_getbytes)();/* get some bytes from " */ /* put a long to underlying stream */
bool_t (*x_putbytes)();/* put some bytes to " */ bool_t (*x_putlong) __P((struct __rpc_xdr *, long *));
u_int (*x_getpostn)();/* returns bytes off from beginning */ /* get some bytes from underlying stream */
bool_t (*x_setpostn)();/* lets you reposition the stream */ bool_t (*x_getbytes) __P((struct __rpc_xdr *, caddr_t, u_int));
long * (*x_inline)(); /* buf quick ptr to buffered data */ /* put some bytes to underlying stream */
void (*x_destroy)(); /* free privates of this xdr_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; } *x_ops;
caddr_t x_public; /* users' data */ caddr_t x_public; /* users' data */
caddr_t x_private; /* pointer to private data */ caddr_t x_private; /* pointer to private data */
@@ -124,6 +121,23 @@ typedef struct {
int x_handy; /* extra private word */ int x_handy; /* extra private word */
} XDR; } 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 * 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 * Caveat emptor: these use single memory cycles to get the
* data from the underlying buffer, and will fail to operate * data from the underlying buffer, and will fail to operate
* properly if the data is not aligned. The standard way to use these * 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. * These are the "generic" xdr routines.
*/ */
extern bool_t xdr_void(); __BEGIN_DECLS
extern bool_t xdr_int(); extern bool_t xdr_void __P((void));
extern bool_t xdr_u_int(); extern bool_t xdr_int __P((XDR *, int *));
extern bool_t xdr_long(); extern bool_t xdr_u_int __P((XDR *, u_int *));
extern bool_t xdr_u_long(); extern bool_t xdr_long __P((XDR *, long *));
extern bool_t xdr_short(); extern bool_t xdr_u_long __P((XDR *, u_long *));
extern bool_t xdr_u_short(); extern bool_t xdr_short __P((XDR *, short *));
extern bool_t xdr_bool(); extern bool_t xdr_u_short __P((XDR *, u_short *));
extern bool_t xdr_enum(); extern bool_t xdr_int16_t __P((XDR *, int16_t *));
extern bool_t xdr_array(); extern bool_t xdr_u_int16_t __P((XDR *, u_int16_t *));
extern bool_t xdr_bytes(); extern bool_t xdr_int32_t __P((XDR *, int32_t *));
extern bool_t xdr_opaque(); extern bool_t xdr_u_int32_t __P((XDR *, u_int32_t *));
extern bool_t xdr_string(); extern bool_t xdr_int64_t __P((XDR *, int64_t *));
extern bool_t xdr_union(); extern bool_t xdr_u_int64_t __P((XDR *, u_int64_t *));
extern bool_t xdr_char(); extern bool_t xdr_bool __P((XDR *, bool_t *));
extern bool_t xdr_u_char(); extern bool_t xdr_enum __P((XDR *, enum_t *));
extern bool_t xdr_vector(); extern bool_t xdr_array __P((XDR *, char **, u_int *, u_int, u_int, xdrproc_t));
extern bool_t xdr_float(); extern bool_t xdr_bytes __P((XDR *, char **, u_int *, u_int));
extern bool_t xdr_double(); extern bool_t xdr_opaque __P((XDR *, caddr_t, u_int));
extern bool_t xdr_reference(); extern bool_t xdr_string __P((XDR *, char **, u_int));
extern bool_t xdr_pointer(); extern bool_t xdr_union __P((XDR *, enum_t *, char *, struct xdr_discrim *, xdrproc_t));
extern bool_t xdr_wrapstring(); 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; * Common opaque bytes objects used by many rpc protocols;
@@ -257,19 +281,34 @@ struct netobj {
char *n_bytes; char *n_bytes;
}; };
typedef struct netobj netobj; 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 * These are the public routines for the various implementations of
* xdr streams. * xdr streams.
*/ */
extern void xdrmem_create(); /* XDR using memory buffers */ __BEGIN_DECLS
extern void xdrstdio_create(); /* XDR using stdio library */ /* XDR using memory buffers */
extern void xdrrec_create(); /* XDR pseudo records for tcp */ extern void xdrmem_create __P((XDR *, char *, u_int, enum xdr_op));
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 */
#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 */

View File

@@ -0,0 +1,2 @@
Makefile
Makefile.in

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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;

View File

@@ -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

View File

@@ -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