summaryrefslogtreecommitdiff
path: root/pppd_plugin/src
diff options
context:
space:
mode:
Diffstat (limited to 'pppd_plugin/src')
-rw-r--r--pppd_plugin/src/Makefile.am13
-rw-r--r--pppd_plugin/src/Makefile.in528
-rw-r--r--pppd_plugin/src/dirutil.c68
-rw-r--r--pppd_plugin/src/dirutil.h14
l---------pppd_plugin/src/if_pppox.h1
-rw-r--r--pppd_plugin/src/orckit_quirks.c86
-rw-r--r--pppd_plugin/src/orckit_quirks.h27
-rw-r--r--pppd_plugin/src/pppd-pptp.871
-rw-r--r--pppd_plugin/src/pppd/cbcp.h26
-rw-r--r--pppd_plugin/src/pppd/ccp.h52
-rw-r--r--pppd_plugin/src/pppd/chap-md5.h31
-rw-r--r--pppd_plugin/src/pppd/chap-new.h130
-rw-r--r--pppd_plugin/src/pppd/chap_ms.h122
-rw-r--r--pppd_plugin/src/pppd/eap.h158
-rw-r--r--pppd_plugin/src/pppd/ecp.h45
-rw-r--r--pppd_plugin/src/pppd/eui64.h114
-rw-r--r--pppd_plugin/src/pppd/fsm.h168
-rw-r--r--pppd_plugin/src/pppd/ipcp.h96
-rw-r--r--pppd_plugin/src/pppd/ipv6cp.h171
-rw-r--r--pppd_plugin/src/pppd/ipxcp.h94
-rw-r--r--pppd_plugin/src/pppd/lcp.h119
-rw-r--r--pppd_plugin/src/pppd/magic.h49
-rw-r--r--pppd_plugin/src/pppd/md4.h64
-rw-r--r--pppd_plugin/src/pppd/md5.h65
-rw-r--r--pppd_plugin/src/pppd/pathnames.h59
-rw-r--r--pppd_plugin/src/pppd/pppcrypt.h48
-rw-r--r--pppd_plugin/src/pppd/pppd.h904
-rw-r--r--pppd_plugin/src/pppd/sha1.h31
-rw-r--r--pppd_plugin/src/pppd/spinlock.h59
-rw-r--r--pppd_plugin/src/pppd/tdb.h164
-rw-r--r--pppd_plugin/src/pppd/upap.h110
-rw-r--r--pppd_plugin/src/pptp.c344
-rw-r--r--pppd_plugin/src/pptp_callmgr.c403
-rw-r--r--pppd_plugin/src/pptp_callmgr.h13
-rw-r--r--pppd_plugin/src/pptp_ctrl.c1077
-rw-r--r--pppd_plugin/src/pptp_ctrl.h57
-rw-r--r--pppd_plugin/src/pptp_msg.h303
-rw-r--r--pppd_plugin/src/pptp_options.h41
-rw-r--r--pppd_plugin/src/pptp_quirks.c54
-rw-r--r--pppd_plugin/src/pptp_quirks.h59
-rw-r--r--pppd_plugin/src/util.c158
-rw-r--r--pppd_plugin/src/util.h54
-rw-r--r--pppd_plugin/src/vector.c209
-rw-r--r--pppd_plugin/src/vector.h31
44 files changed, 0 insertions, 6490 deletions
diff --git a/pppd_plugin/src/Makefile.am b/pppd_plugin/src/Makefile.am
deleted file mode 100644
index 6c4282c..0000000
--- a/pppd_plugin/src/Makefile.am
+++ /dev/null
@@ -1,13 +0,0 @@
-
-# set the include path found by configure
-INCLUDES = $(all_includes)
-
-# the library search path.
-lib_LTLIBRARIES = pptp.la
-pptp_la_LDFLAGS = -module
-pptp_la_SOURCES = pptp.c pptp_callmgr.c pptp_ctrl.c util.c vector.c \
- dirutil.c pptp_quirks.c orckit_quirks.c
-noinst_HEADERS = pptp_callmgr.h pptp_ctrl.h util.h vector.h pptp_options.h \
- dirutil.h pptp_quirks.h orckit_quirks.h if_pppox.h
-AM_CFLAGS = -Wall
-man_MANS = pppd-pptp.8
diff --git a/pppd_plugin/src/Makefile.in b/pppd_plugin/src/Makefile.in
deleted file mode 100644
index 79d6101..0000000
--- a/pppd_plugin/src/Makefile.in
+++ /dev/null
@@ -1,528 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man8dir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(lib_LTLIBRARIES)
-pptp_la_LIBADD =
-am_pptp_la_OBJECTS = pptp.lo pptp_callmgr.lo pptp_ctrl.lo util.lo \
- vector.lo dirutil.lo pptp_quirks.lo orckit_quirks.lo
-pptp_la_OBJECTS = $(am_pptp_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(pptp_la_SOURCES)
-DIST_SOURCES = $(pptp_la_SOURCES)
-man8dir = $(mandir)/man8
-NROFF = nroff
-MANS = $(man_MANS)
-HEADERS = $(noinst_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-GREP = @GREP@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-# set the include path found by configure
-INCLUDES = $(all_includes)
-
-# the library search path.
-lib_LTLIBRARIES = pptp.la
-pptp_la_LDFLAGS = -module
-pptp_la_SOURCES = pptp.c pptp_callmgr.c pptp_ctrl.c util.c vector.c \
- dirutil.c pptp_quirks.c orckit_quirks.c
-
-noinst_HEADERS = pptp_callmgr.h pptp_ctrl.h util.h vector.h pptp_options.h \
- dirutil.h pptp_quirks.h orckit_quirks.h if_pppox.h
-
-AM_CFLAGS = -Wall
-man_MANS = pppd-pptp.8
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
- f=$(am__strip_dir) \
- echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
- else :; fi; \
- done
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- p=$(am__strip_dir) \
- echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
- $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-pptp.la: $(pptp_la_OBJECTS) $(pptp_la_DEPENDENCIES)
- $(LINK) -rpath $(libdir) $(pptp_la_LDFLAGS) $(pptp_la_OBJECTS) $(pptp_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirutil.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orckit_quirks.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pptp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pptp_callmgr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pptp_ctrl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pptp_quirks.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-install-man8: $(man8_MANS) $(man_MANS)
- @$(NORMAL_INSTALL)
- test -z "$(man8dir)" || $(mkdir_p) "$(DESTDIR)$(man8dir)"
- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.8*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 8*) ;; \
- *) ext='8' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
- $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \
- done
-uninstall-man8:
- @$(NORMAL_UNINSTALL)
- @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
- l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
- for i in $$l2; do \
- case "$$i" in \
- *.8*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- case "$$ext" in \
- 8*) ;; \
- *) ext='8' ;; \
- esac; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed -e 's/^.*\///'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
- rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
- if test -d $$d/$$file; then \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(MANS) $(HEADERS)
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(man8dir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-man
-
-install-exec-am: install-libLTLIBRARIES
-
-install-info: install-info-am
-
-install-man: install-man8
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES uninstall-man
-
-uninstall-man: uninstall-man8
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libLTLIBRARIES clean-libtool ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-exec \
- install-exec-am install-info install-info-am \
- install-libLTLIBRARIES install-man install-man8 install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-info-am \
- uninstall-libLTLIBRARIES uninstall-man uninstall-man8
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/pppd_plugin/src/dirutil.c b/pppd_plugin/src/dirutil.c
deleted file mode 100644
index e7b1a77..0000000
--- a/pppd_plugin/src/dirutil.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* dirutil.c ... directory utilities.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: dirutil.c,v 1.2 2003/06/17 17:25:47 reink Exp $
- */
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include "dirutil.h"
-
-/* Returned malloc'ed string representing basename */
-char *basenamex(char *pathname)
-{
- char *dup = strdup(pathname);
- char *ptr = strrchr(stripslash(dup), '/');
- if (ptr == NULL) return dup;
- ptr = strdup(ptr+1);
- free(dup);
- return ptr;
-}
-
-/* Return malloc'ed string representing directory name (no trailing slash) */
-char *dirnamex(char *pathname)
-{
- char *dup = strdup(pathname);
- char *ptr = strrchr(stripslash(dup), '/');
- if (ptr == NULL) { free(dup); return strdup("."); }
- if (ptr == dup && dup[0] == '/') ptr++;
- *ptr = '\0';
- return dup;
-}
-
-/* In-place modify a string to remove trailing slashes. Returns arg.
- * stripslash("/") returns "/";
- */
-char *stripslash(char *pathname) {
- int len = strlen(pathname);
- while (len > 1 && pathname[len - 1] == '/')
- pathname[--len] = '\0';
- return pathname;
-}
-
-/* ensure dirname exists, creating it if necessary. */
-int make_valid_path(char *dir, mode_t mode)
-{
- struct stat st;
- char *tmp = NULL, *path = stripslash(strdup(dir));
- int retval;
- if (stat(path, &st) == 0) { /* file exists */
- if (S_ISDIR(st.st_mode)) { retval = 1; goto end; }
- else { retval = 0; goto end; } /* not a directory. Oops. */
- }
- /* Directory doesn't exist. Let's make it. */
- /* Make parent first. */
- if (!make_valid_path(tmp = dirnamex(path), mode)) { retval = 0; goto end; }
- /* Now make this 'un. */
- if (mkdir(path, mode) < 0) { retval = 0; goto end; }
- /* Success. */
- retval = 1;
-
-end:
- if (tmp != NULL) free(tmp);
- if (path != NULL) free(path);
- return retval;
-}
diff --git a/pppd_plugin/src/dirutil.h b/pppd_plugin/src/dirutil.h
deleted file mode 100644
index 4c9aa87..0000000
--- a/pppd_plugin/src/dirutil.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* dirutil.h ... directory utilities.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: dirutil.h,v 1.1.1.1 2000/12/23 08:19:51 scott Exp $
- */
-
-/* Returned malloc'ed string representing basename */
-char *basenamex(char *pathname);
-/* Return malloc'ed string representing directory name (no trailing slash) */
-char *dirnamex(char *pathname);
-/* In-place modify a string to remove trailing slashes. Returns arg. */
-char *stripslash(char *pathname);
-/* ensure dirname exists, creating it if necessary. */
-int make_valid_path(char *dirname, mode_t mode);
diff --git a/pppd_plugin/src/if_pppox.h b/pppd_plugin/src/if_pppox.h
deleted file mode 120000
index 48a1663..0000000
--- a/pppd_plugin/src/if_pppox.h
+++ /dev/null
@@ -1 +0,0 @@
-../../kernel/driver/if_pppox.h \ No newline at end of file
diff --git a/pppd_plugin/src/orckit_quirks.c b/pppd_plugin/src/orckit_quirks.c
deleted file mode 100644
index 1d03737..0000000
--- a/pppd_plugin/src/orckit_quirks.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* orckit_quirks.c ...... fix quirks in orckit adsl modems
- * mulix <mulix@actcom.co.il>
- *
- * $Id: orckit_quirks.c,v 1.3 2002/03/01 01:23:36 quozl Exp $
- */
-
-#include <string.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-#include "pptp_msg.h"
-#include "pptp_options.h"
-#include "pptp_ctrl.h"
-#include "util.h"
-
-
-
-/* return 0 on success, non zero otherwise */
-int
-orckit_atur3_build_hook(struct pptp_out_call_rqst* packet)
-{
- unsigned int name_length = 10;
-
- struct pptp_out_call_rqst fixed_packet = {
- PPTP_HEADER_CTRL(PPTP_OUT_CALL_RQST),
- 0, /* hton16(call->callid) */
- 0, /* hton16(call->sernum) */
- hton32(PPTP_BPS_MIN), hton32(PPTP_BPS_MAX),
- hton32(PPTP_BEARER_DIGITAL), hton32(PPTP_FRAME_ANY),
- hton16(PPTP_WINDOW), 0, hton16(name_length), 0,
- {'R','E','L','A','Y','_','P','P','P','1',0}, {0}
- };
-
- if (!packet)
- return -1;
-
- memcpy(packet, &fixed_packet, sizeof(*packet));
-
- return 0;
-}
-
-/* return 0 on success, non zero otherwise */
-int
-orckit_atur3_set_link_hook(struct pptp_set_link_info* packet,
- int peer_call_id)
-{
- struct pptp_set_link_info fixed_packet = {
- PPTP_HEADER_CTRL(PPTP_SET_LINK_INFO),
- hton16(peer_call_id),
- 0,
- 0xffffffff,
- 0xffffffff};
-
- if (!packet)
- return -1;
-
- memcpy(packet, &fixed_packet, sizeof(*packet));
- return 0;
-}
-
-/* return 0 on success, non 0 otherwise */
-int
-orckit_atur3_start_ctrl_conn_hook(struct pptp_start_ctrl_conn* packet)
-{
- struct pptp_start_ctrl_conn fixed_packet = {
- {0}, /* we'll set the header later */
- hton16(PPTP_VERSION), 0, 0,
- hton32(PPTP_FRAME_ASYNC), hton32(PPTP_BEARER_ANALOG),
- hton16(0) /* max channels */,
- hton16(0x6021),
- {'R','E','L','A','Y','_','P','P','P','1',0}, /* hostname */
- {'M','S',' ','W','i','n',' ','N','T',0} /* vendor */
- };
-
- if (!packet)
- return -1;
-
- /* grab the header from the original packet, since we dont
- know if this is a request or a reply */
- memcpy(&fixed_packet.header, &packet->header, sizeof(struct pptp_header));
-
- /* and now overwrite the full packet, effectively preserving the header */
- memcpy(packet, &fixed_packet, sizeof(*packet));
- return 0;
-}
-
-
diff --git a/pppd_plugin/src/orckit_quirks.h b/pppd_plugin/src/orckit_quirks.h
deleted file mode 100644
index ad0193d..0000000
--- a/pppd_plugin/src/orckit_quirks.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* orckit_quirks.h ...... fix quirks in orckit adsl modems
- * mulix <mulix@actcom.co.il>
- *
- * $Id: orckit_quirks.h,v 1.2 2001/11/23 03:42:51 quozl Exp $
- */
-
-#ifndef INC_ORCKIT_QUIRKS_H_
-#define INC_ORCKIT_QUIRKS_H_
-
-#include "pptp_options.h"
-#include "pptp_ctrl.h"
-#include "pptp_msg.h"
-
-/* return 0 on success, non zero otherwise */
-int
-orckit_atur3_build_hook(struct pptp_out_call_rqst* packt);
-
-/* return 0 on success, non zero otherwise */
-int
-orckit_atur3_set_link_hook(struct pptp_set_link_info* packet,
- int peer_call_id);
-
-/* return 0 on success, non zero otherwise */
-int
-orckit_atur3_start_ctrl_conn_hook(struct pptp_start_ctrl_conn* packet);
-
-#endif /* INC_ORCKIT_QUIRKS_H_ */
diff --git a/pppd_plugin/src/pppd-pptp.8 b/pppd_plugin/src/pppd-pptp.8
deleted file mode 100644
index 85b31b2..0000000
--- a/pppd_plugin/src/pppd-pptp.8
+++ /dev/null
@@ -1,71 +0,0 @@
-.\" manual page [] for ACCEL-PPTP plugin for pppd 2.4
-.\" $Id: pppd-pptp.8,v 1.0 2007/10/17 13:27:17 kad Exp $
-.\" SH section heading
-.\" SS subsection heading
-.\" LP paragraph
-.\" IP indented paragraph
-.\" TP hanging label
-.TH PPPD-PPTP 8
-.SH NAME
-pptp.so \- PPTP VPN plugin for
-.BR pppd (8)
-.SH SYNOPSIS
-.B pppd
-[
-.I options
-]
-plugin pptp.so
-.SH DESCRIPTION
-.LP
-The PPTP plugin for pppd performs interaction with pptp kernel module
-and has built-in call manager (client part of PPTP).
-It pasees necessary paremeters from \fIoptions\fR into kernel module
-to configure ppp-pptp channel. If it runs in client mode, then additionally
-call manager starts up. PPTPD daemon automaticaly invokes this plugin
-in server mode and passes necessary options, so additional configuration
-is not needed.
-
-.SH OPTIONS for client mode
-The PPTP plugin introduces one additional pppd option:
-.TP
-.BI "pptp_server " server " (required)"
-Specifies ip address or hostname of pptp server.
-.TP
-.BI "pptp_window " packets " (optional)"
-The amount of sliding window size.
-Set to 0 to turn off sliding window.
- to 3-10 for low speed connections.
- to >10 for hi speed connections.
-.TP
-.BI "pptp_phone " phone " (optional)"
-The phone string that sended to pptp server.
-.TP
-.BI "pptp_timeout " miliseconds " (optional)"
-Specifies timeout for waiting "ack" packet from server.
-
-.SH USAGE
-Sample configuration file:
-.nf
-plugin "pptp.so"
-pptp_server 192.168.0.1
-pptp_window 50
-name myname
-remotename pptp
-noauth
-refuse-eap
-refuse-chap
-refuse-mschap
-nobsdcomp
-nodeflate
-novj
-novjccomp
-require-mppe-128
-lcp-echo-interval 20
-lcp-echo-failure 3
-.fi
-
-.SH SEE ALSO
-.BR pppd (8) " " pptpd (8) " " pptpd.conf (5)
-
-.SH AUTHOR
-xeb xeb@mail.ru
diff --git a/pppd_plugin/src/pppd/cbcp.h b/pppd_plugin/src/pppd/cbcp.h
deleted file mode 100644
index c2ab3f6..0000000
--- a/pppd_plugin/src/pppd/cbcp.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef CBCP_H
-#define CBCP_H
-
-typedef struct cbcp_state {
- int us_unit; /* Interface unit number */
- u_char us_id; /* Current id */
- u_char us_allowed;
- int us_type;
- char *us_number; /* Telefone Number */
-} cbcp_state;
-
-extern cbcp_state cbcp[];
-
-extern struct protent cbcp_protent;
-
-#define CBCP_MINLEN 4
-
-#define CBCP_REQ 1
-#define CBCP_RESP 2
-#define CBCP_ACK 3
-
-#define CB_CONF_NO 1
-#define CB_CONF_USER 2
-#define CB_CONF_ADMIN 3
-#define CB_CONF_LIST 4
-#endif
diff --git a/pppd_plugin/src/pppd/ccp.h b/pppd_plugin/src/pppd/ccp.h
deleted file mode 100644
index 6f4a2fe..0000000
--- a/pppd_plugin/src/pppd/ccp.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * ccp.h - Definitions for PPP Compression Control Protocol.
- *
- * Copyright (c) 1994-2002 Paul Mackerras. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * 3. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Paul Mackerras
- * <paulus@samba.org>".
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: ccp.h,v 1.12 2004/11/04 10:02:26 paulus Exp $
- */
-
-typedef struct ccp_options {
- bool bsd_compress; /* do BSD Compress? */
- bool deflate; /* do Deflate? */
- bool predictor_1; /* do Predictor-1? */
- bool predictor_2; /* do Predictor-2? */
- bool deflate_correct; /* use correct code for deflate? */
- bool deflate_draft; /* use draft RFC code for deflate? */
- bool mppe; /* do MPPE? */
- u_short bsd_bits; /* # bits/code for BSD Compress */
- u_short deflate_size; /* lg(window size) for Deflate */
- short method; /* code for chosen compression method */
-} ccp_options;
-
-extern fsm ccp_fsm[];
-extern ccp_options ccp_wantoptions[];
-extern ccp_options ccp_gotoptions[];
-extern ccp_options ccp_allowoptions[];
-extern ccp_options ccp_hisoptions[];
-
-extern struct protent ccp_protent;
diff --git a/pppd_plugin/src/pppd/chap-md5.h b/pppd_plugin/src/pppd/chap-md5.h
deleted file mode 100644
index 30d0658..0000000
--- a/pppd_plugin/src/pppd/chap-md5.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * chap-md5.h - New CHAP/MD5 implementation.
- *
- * Copyright (c) 2003 Paul Mackerras. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * 3. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Paul Mackerras
- * <paulus@samba.org>".
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-extern void chap_md5_init(void);
diff --git a/pppd_plugin/src/pppd/chap-new.h b/pppd_plugin/src/pppd/chap-new.h
deleted file mode 100644
index 48235d4..0000000
--- a/pppd_plugin/src/pppd/chap-new.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * chap-new.c - New CHAP implementation.
- *
- * Copyright (c) 2003 Paul Mackerras. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * 3. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Paul Mackerras
- * <paulus@samba.org>".
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * CHAP packets begin with a standard header with code, id, len (2 bytes).
- */
-#define CHAP_HDRLEN 4
-
-/*
- * Values for the code field.
- */
-#define CHAP_CHALLENGE 1
-#define CHAP_RESPONSE 2
-#define CHAP_SUCCESS 3
-#define CHAP_FAILURE 4
-
-/*
- * CHAP digest codes.
- */
-#define CHAP_MD5 5
-#define CHAP_MICROSOFT 0x80
-#define CHAP_MICROSOFT_V2 0x81
-
-/*
- * Semi-arbitrary limits on challenge and response fields.
- */
-#define MAX_CHALLENGE_LEN 64
-#define MAX_RESPONSE_LEN 64
-
-/* bitmask of supported algorithms */
-#define MDTYPE_MICROSOFT_V2 0x1
-#define MDTYPE_MICROSOFT 0x2
-#define MDTYPE_MD5 0x4
-#define MDTYPE_NONE 0
-
-/* hashes supported by this instance of pppd */
-extern int chap_mdtype_all;
-
-/* Return the digest alg. ID for the most preferred digest type. */
-#define CHAP_DIGEST(mdtype) \
- ((mdtype) & MDTYPE_MD5)? CHAP_MD5: \
- ((mdtype) & MDTYPE_MICROSOFT_V2)? CHAP_MICROSOFT_V2: \
- ((mdtype) & MDTYPE_MICROSOFT)? CHAP_MICROSOFT: \
- 0
-
-/* Return the bit flag (lsb set) for our most preferred digest type. */
-#define CHAP_MDTYPE(mdtype) ((mdtype) ^ ((mdtype) - 1)) & (mdtype)
-
-/* Return the bit flag for a given digest algorithm ID. */
-#define CHAP_MDTYPE_D(digest) \
- ((digest) == CHAP_MICROSOFT_V2)? MDTYPE_MICROSOFT_V2: \
- ((digest) == CHAP_MICROSOFT)? MDTYPE_MICROSOFT: \
- ((digest) == CHAP_MD5)? MDTYPE_MD5: \
- 0
-
-/* Can we do the requested digest? */
-#define CHAP_CANDIGEST(mdtype, digest) \
- ((digest) == CHAP_MICROSOFT_V2)? (mdtype) & MDTYPE_MICROSOFT_V2: \
- ((digest) == CHAP_MICROSOFT)? (mdtype) & MDTYPE_MICROSOFT: \
- ((digest) == CHAP_MD5)? (mdtype) & MDTYPE_MD5: \
- 0
-
-/*
- * The code for each digest type has to supply one of these.
- */
-struct chap_digest_type {
- int code;
-
- /*
- * Note: challenge and response arguments below are formatted as
- * a length byte followed by the actual challenge/response data.
- */
- void (*generate_challenge)(unsigned char *challenge);
- int (*verify_response)(int id, char *name,
- unsigned char *secret, int secret_len,
- unsigned char *challenge, unsigned char *response,
- char *message, int message_space);
- void (*make_response)(unsigned char *response, int id, char *our_name,
- unsigned char *challenge, char *secret, int secret_len,
- unsigned char *priv);
- int (*check_success)(unsigned char *pkt, int len, unsigned char *priv);
- void (*handle_failure)(unsigned char *pkt, int len);
-
- struct chap_digest_type *next;
-};
-
-/* Hook for a plugin to validate CHAP challenge */
-extern int (*chap_verify_hook)(char *name, char *ourname, int id,
- struct chap_digest_type *digest,
- unsigned char *challenge, unsigned char *response,
- char *message, int message_space);
-
-/* Called by digest code to register a digest type */
-extern void chap_register_digest(struct chap_digest_type *);
-
-/* Called by authentication code to start authenticating the peer. */
-extern void chap_auth_peer(int unit, char *our_name, int digest_code);
-
-/* Called by auth. code to start authenticating us to the peer. */
-extern void chap_auth_with_peer(int unit, char *our_name, int digest_code);
-
-/* Represents the CHAP protocol to the main pppd code */
-extern struct protent chap_protent;
diff --git a/pppd_plugin/src/pppd/chap_ms.h b/pppd_plugin/src/pppd/chap_ms.h
deleted file mode 100644
index 168c0be..0000000
--- a/pppd_plugin/src/pppd/chap_ms.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * chap_ms.h - Challenge Handshake Authentication Protocol definitions.
- *
- * Copyright (c) 1995 Eric Rosenquist. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: chap_ms.h,v 1.12 2004/11/09 22:49:05 paulus Exp $
- */
-
-#ifndef __CHAPMS_INCLUDE__
-
-#define MD4_SIGNATURE_SIZE 16 /* 16 bytes in a MD4 message digest */
-#define MAX_NT_PASSWORD 256 /* Max (Unicode) chars in an NT pass */
-
-#define MS_CHAP_RESPONSE_LEN 49 /* Response length for MS-CHAP */
-#define MS_CHAP2_RESPONSE_LEN 49 /* Response length for MS-CHAPv2 */
-#define MS_AUTH_RESPONSE_LENGTH 40 /* MS-CHAPv2 authenticator response, */
- /* as ASCII */
-
-/* E=eeeeeeeeee error codes for MS-CHAP failure messages. */
-#define MS_CHAP_ERROR_RESTRICTED_LOGON_HOURS 646
-#define MS_CHAP_ERROR_ACCT_DISABLED 647
-#define MS_CHAP_ERROR_PASSWD_EXPIRED 648
-#define MS_CHAP_ERROR_NO_DIALIN_PERMISSION 649
-#define MS_CHAP_ERROR_AUTHENTICATION_FAILURE 691
-#define MS_CHAP_ERROR_CHANGING_PASSWORD 709
-
-/*
- * Apparently gcc on ARM gives all structures 4-byte alignment
- * by default. This tells gcc that these structures may be
- * unaligned and may not have extra padding inside them.
- */
-#ifdef __GNUC__
-#define PACKED __attribute__((__packed__))
-#else
-#define PACKED
-#endif
-
-/*
- * Use MS_CHAP_RESPONSE_LEN, rather than sizeof(MS_ChapResponse),
- * in case this struct gets padded.
- */
-typedef struct {
- u_char LANManResp[24];
- u_char NTResp[24];
- u_char UseNT[1]; /* If 1, ignore the LANMan response field */
-} MS_ChapResponse PACKED;
-
-/*
- * Use MS_CHAP2_RESPONSE_LEN, rather than sizeof(MS_Chap2Response),
- * in case this struct gets padded.
- */
-typedef struct {
- u_char PeerChallenge[16];
- u_char Reserved[8]; /* Must be zero */
- u_char NTResp[24];
- u_char Flags[1]; /* Must be zero */
-} MS_Chap2Response PACKED;
-
-#ifdef MPPE
-#include <net/ppp-comp.h> /* MPPE_MAX_KEY_LEN */
-extern u_char mppe_send_key[MPPE_MAX_KEY_LEN];
-extern u_char mppe_recv_key[MPPE_MAX_KEY_LEN];
-extern int mppe_keys_set;
-
-/* These values are the RADIUS attribute values--see RFC 2548. */
-#define MPPE_ENC_POL_ENC_ALLOWED 1
-#define MPPE_ENC_POL_ENC_REQUIRED 2
-#define MPPE_ENC_TYPES_RC4_40 2
-#define MPPE_ENC_TYPES_RC4_128 4
-
-/* used by plugins (using above values) */
-extern void set_mppe_enc_types(int, int);
-#endif
-
-/* Are we the authenticator or authenticatee? For MS-CHAPv2 key derivation. */
-#define MS_CHAP2_AUTHENTICATEE 0
-#define MS_CHAP2_AUTHENTICATOR 1
-
-void ChapMS __P((u_char *, char *, int, MS_ChapResponse *));
-void ChapMS2 __P((u_char *, u_char *, char *, char *, int,
- MS_Chap2Response *, u_char[MS_AUTH_RESPONSE_LENGTH+1], int));
-#ifdef MPPE
-void mppe_set_keys __P((u_char *, u_char[MD4_SIGNATURE_SIZE]));
-void mppe_set_keys2(u_char PasswordHashHash[MD4_SIGNATURE_SIZE],
- u_char NTResponse[24], int IsServer);
-#endif
-
-void ChallengeHash __P((u_char[16], u_char *, char *, u_char[8]));
-
-void GenerateAuthenticatorResponse(u_char PasswordHashHash[MD4_SIGNATURE_SIZE],
- u_char NTResponse[24], u_char PeerChallenge[16],
- u_char *rchallenge, char *username,
- u_char authResponse[MS_AUTH_RESPONSE_LENGTH+1]);
-
-void chapms_init(void);
-
-#define __CHAPMS_INCLUDE__
-#endif /* __CHAPMS_INCLUDE__ */
diff --git a/pppd_plugin/src/pppd/eap.h b/pppd_plugin/src/pppd/eap.h
deleted file mode 100644
index 199d184..0000000
--- a/pppd_plugin/src/pppd/eap.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * eap.h - Extensible Authentication Protocol for PPP (RFC 2284)
- *
- * Copyright (c) 2001 by Sun Microsystems, Inc.
- * All rights reserved.
- *
- * Non-exclusive rights to redistribute, modify, translate, and use
- * this software in source and binary forms, in whole or in part, is
- * hereby granted, provided that the above copyright notice is
- * duplicated in any source form, and that neither the name of the
- * copyright holder nor the author is used to endorse or promote
- * products derived from this software.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Original version by James Carlson
- *
- * $Id: eap.h,v 1.2 2003/06/11 23:56:26 paulus Exp $
- */
-
-#ifndef PPP_EAP_H
-#define PPP_EAP_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Packet header = Code, id, length.
- */
-#define EAP_HEADERLEN 4
-
-
-/* EAP message codes. */
-#define EAP_REQUEST 1
-#define EAP_RESPONSE 2
-#define EAP_SUCCESS 3
-#define EAP_FAILURE 4
-
-/* EAP types */
-#define EAPT_IDENTITY 1
-#define EAPT_NOTIFICATION 2
-#define EAPT_NAK 3 /* (response only) */
-#define EAPT_MD5CHAP 4
-#define EAPT_OTP 5 /* One-Time Password; RFC 1938 */
-#define EAPT_TOKEN 6 /* Generic Token Card */
-/* 7 and 8 are unassigned. */
-#define EAPT_RSA 9 /* RSA Public Key Authentication */
-#define EAPT_DSS 10 /* DSS Unilateral */
-#define EAPT_KEA 11 /* KEA */
-#define EAPT_KEA_VALIDATE 12 /* KEA-VALIDATE */
-#define EAPT_TLS 13 /* EAP-TLS */
-#define EAPT_DEFENDER 14 /* Defender Token (AXENT) */
-#define EAPT_W2K 15 /* Windows 2000 EAP */
-#define EAPT_ARCOT 16 /* Arcot Systems */
-#define EAPT_CISCOWIRELESS 17 /* Cisco Wireless */
-#define EAPT_NOKIACARD 18 /* Nokia IP smart card */
-#define EAPT_SRP 19 /* Secure Remote Password */
-/* 20 is deprecated */
-
-/* EAP SRP-SHA1 Subtypes */
-#define EAPSRP_CHALLENGE 1 /* Request 1 - Challenge */
-#define EAPSRP_CKEY 1 /* Response 1 - Client Key */
-#define EAPSRP_SKEY 2 /* Request 2 - Server Key */
-#define EAPSRP_CVALIDATOR 2 /* Response 2 - Client Validator */
-#define EAPSRP_SVALIDATOR 3 /* Request 3 - Server Validator */
-#define EAPSRP_ACK 3 /* Response 3 - final ack */
-#define EAPSRP_LWRECHALLENGE 4 /* Req/resp 4 - Lightweight rechal */
-
-#define SRPVAL_EBIT 0x00000001 /* Use shared key for ECP */
-
-#define SRP_PSEUDO_ID "pseudo_"
-#define SRP_PSEUDO_LEN 7
-
-#define MD5_SIGNATURE_SIZE 16
-#define MIN_CHALLENGE_LENGTH 16
-#define MAX_CHALLENGE_LENGTH 24
-
-enum eap_state_code {
- eapInitial = 0, /* No EAP authentication yet requested */
- eapPending, /* Waiting for LCP (no timer) */
- eapClosed, /* Authentication not in use */
- eapListen, /* Client ready (and timer running) */
- eapIdentify, /* EAP Identify sent */
- eapSRP1, /* Sent EAP SRP-SHA1 Subtype 1 */
- eapSRP2, /* Sent EAP SRP-SHA1 Subtype 2 */
- eapSRP3, /* Sent EAP SRP-SHA1 Subtype 3 */
- eapMD5Chall, /* Sent MD5-Challenge */
- eapOpen, /* Completed authentication */
- eapSRP4, /* Sent EAP SRP-SHA1 Subtype 4 */
- eapBadAuth /* Failed authentication */
-};
-
-#define EAP_STATES \
- "Initial", "Pending", "Closed", "Listen", "Identify", \
- "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth"
-
-#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen)
-#define eap_server_active(esp) \
- ((esp)->es_server.ea_state >= eapIdentify && \
- (esp)->es_server.ea_state <= eapMD5Chall)
-
-struct eap_auth {
- char *ea_name; /* Our name */
- char *ea_peer; /* Peer's name */
- void *ea_session; /* Authentication library linkage */
- u_char *ea_skey; /* Shared encryption key */
- int ea_timeout; /* Time to wait (for retransmit/fail) */
- int ea_maxrequests; /* Max Requests allowed */
- u_short ea_namelen; /* Length of our name */
- u_short ea_peerlen; /* Length of peer's name */
- enum eap_state_code ea_state;
- u_char ea_id; /* Current id */
- u_char ea_requests; /* Number of Requests sent/received */
- u_char ea_responses; /* Number of Responses */
- u_char ea_type; /* One of EAPT_* */
- u_int32_t ea_keyflags; /* SRP shared key usage flags */
-};
-
-/*
- * Complete EAP state for one PPP session.
- */
-typedef struct eap_state {
- int es_unit; /* Interface unit number */
- struct eap_auth es_client; /* Client (authenticatee) data */
- struct eap_auth es_server; /* Server (authenticator) data */
- int es_savedtime; /* Saved timeout */
- int es_rechallenge; /* EAP rechallenge interval */
- int es_lwrechallenge; /* SRP lightweight rechallenge inter */
- bool es_usepseudo; /* Use SRP Pseudonym if offered one */
- int es_usedpseudo; /* Set if we already sent PN */
- int es_challen; /* Length of challenge string */
- u_char es_challenge[MAX_CHALLENGE_LENGTH];
-} eap_state;
-
-/*
- * Timeouts.
- */
-#define EAP_DEFTIMEOUT 3 /* Timeout (seconds) for rexmit */
-#define EAP_DEFTRANSMITS 10 /* max # times to transmit */
-#define EAP_DEFREQTIME 20 /* Time to wait for peer request */
-#define EAP_DEFALLOWREQ 20 /* max # times to accept requests */
-
-extern eap_state eap_states[];
-
-void eap_authwithpeer __P((int unit, char *localname));
-void eap_authpeer __P((int unit, char *localname));
-
-extern struct protent eap_protent;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* PPP_EAP_H */
-
diff --git a/pppd_plugin/src/pppd/ecp.h b/pppd_plugin/src/pppd/ecp.h
deleted file mode 100644
index df6e3ca..0000000
--- a/pppd_plugin/src/pppd/ecp.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ecp.h - Definitions for PPP Encryption Control Protocol.
- *
- * Copyright (c) 2002 Google, Inc.
- * 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: ecp.h,v 1.2 2003/01/10 07:12:36 fcusack Exp $
- */
-
-typedef struct ecp_options {
- bool required; /* Is ECP required? */
- unsigned enctype; /* Encryption type */
-} ecp_options;
-
-extern fsm ecp_fsm[];
-extern ecp_options ecp_wantoptions[];
-extern ecp_options ecp_gotoptions[];
-extern ecp_options ecp_allowoptions[];
-extern ecp_options ecp_hisoptions[];
-
-extern struct protent ecp_protent;
diff --git a/pppd_plugin/src/pppd/eui64.h b/pppd_plugin/src/pppd/eui64.h
deleted file mode 100644
index 0f6b6fd..0000000
--- a/pppd_plugin/src/pppd/eui64.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * eui64.h - EUI64 routines for IPv6CP.
- *
- * Copyright (c) 1999 Tommi Komulainen. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Tommi Komulainen
- * <Tommi.Komulainen@iki.fi>".
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: eui64.h,v 1.6 2002/12/04 23:03:32 paulus Exp $
-*/
-
-#ifndef __EUI64_H__
-#define __EUI64_H__
-
-#if !defined(INET6)
-#error "this file should only be included when INET6 is defined"
-#endif /* not defined(INET6) */
-
-#if defined(SOL2)
-#include <netinet/in.h>
-
-typedef union {
- uint8_t e8[8]; /* lower 64-bit IPv6 address */
- uint32_t e32[2]; /* lower 64-bit IPv6 address */
-} eui64_t;
-
-/*
- * Declare the two below, since in.h only defines them when _KERNEL
- * is declared - which shouldn't be true when dealing with user-land programs
- */
-#define s6_addr8 _S6_un._S6_u8
-#define s6_addr32 _S6_un._S6_u32
-
-#else /* else if not defined(SOL2) */
-
-/*
- * TODO:
- *
- * Maybe this should be done by processing struct in6_addr directly...
- */
-typedef union
-{
- u_int8_t e8[8];
- u_int16_t e16[4];
- u_int32_t e32[2];
-} eui64_t;
-
-#endif /* defined(SOL2) */
-
-#define eui64_iszero(e) (((e).e32[0] | (e).e32[1]) == 0)
-#define eui64_equals(e, o) (((e).e32[0] == (o).e32[0]) && \
- ((e).e32[1] == (o).e32[1]))
-#define eui64_zero(e) (e).e32[0] = (e).e32[1] = 0;
-
-#define eui64_copy(s, d) memcpy(&(d), &(s), sizeof(eui64_t))
-
-#define eui64_magic(e) do { \
- (e).e32[0] = magic(); \
- (e).e32[1] = magic(); \
- (e).e8[0] &= ~2; \
- } while (0)
-#define eui64_magic_nz(x) do { \
- eui64_magic(x); \
- } while (eui64_iszero(x))
-#define eui64_magic_ne(x, y) do { \
- eui64_magic(x); \
- } while (eui64_equals(x, y))
-
-#define eui64_get(ll, cp) do { \
- eui64_copy((*cp), (ll)); \
- (cp) += sizeof(eui64_t); \
- } while (0)
-
-#define eui64_put(ll, cp) do { \
- eui64_copy((ll), (*cp)); \
- (cp) += sizeof(eui64_t); \
- } while (0)
-
-#define eui64_set32(e, l) do { \
- (e).e32[0] = 0; \
- (e).e32[1] = htonl(l); \
- } while (0)
-#define eui64_setlo32(e, l) eui64_set32(e, l)
-
-char *eui64_ntoa __P((eui64_t)); /* Returns ascii representation of id */
-
-#endif /* __EUI64_H__ */
-
diff --git a/pppd_plugin/src/pppd/fsm.h b/pppd_plugin/src/pppd/fsm.h
deleted file mode 100644
index 87a78d3..0000000
--- a/pppd_plugin/src/pppd/fsm.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * fsm.h - {Link, IP} Control Protocol Finite State Machine definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: fsm.h,v 1.10 2004/11/13 02:28:15 paulus Exp $
- */
-
-/*
- * Packet header = Code, id, length.
- */
-#define HEADERLEN 4
-
-
-/*
- * CP (LCP, IPCP, etc.) codes.
- */
-#define CONFREQ 1 /* Configuration Request */
-#define CONFACK 2 /* Configuration Ack */
-#define CONFNAK 3 /* Configuration Nak */
-#define CONFREJ 4 /* Configuration Reject */
-#define TERMREQ 5 /* Termination Request */
-#define TERMACK 6 /* Termination Ack */
-#define CODEREJ 7 /* Code Reject */
-
-
-/*
- * Each FSM is described by an fsm structure and fsm callbacks.
- */
-typedef struct fsm {
- int unit; /* Interface unit number */
- int protocol; /* Data Link Layer Protocol field value */
- int state; /* State */
- int flags; /* Contains option bits */
- u_char id; /* Current id */
- u_char reqid; /* Current request id */
- u_char seen_ack; /* Have received valid Ack/Nak/Rej to Req */
- int timeouttime; /* Timeout time in milliseconds */
- int maxconfreqtransmits; /* Maximum Configure-Request transmissions */
- int retransmits; /* Number of retransmissions left */
- int maxtermtransmits; /* Maximum Terminate-Request transmissions */
- int nakloops; /* Number of nak loops since last ack */
- int rnakloops; /* Number of naks received */
- int maxnakloops; /* Maximum number of nak loops tolerated */
- struct fsm_callbacks *callbacks; /* Callback routines */
- char *term_reason; /* Reason for closing protocol */
- int term_reason_len; /* Length of term_reason */
-} fsm;
-
-
-typedef struct fsm_callbacks {
- void (*resetci) /* Reset our Configuration Information */
- __P((fsm *));
- int (*cilen) /* Length of our Configuration Information */
- __P((fsm *));
- void (*addci) /* Add our Configuration Information */
- __P((fsm *, u_char *, int *));
- int (*ackci) /* ACK our Configuration Information */
- __P((fsm *, u_char *, int));
- int (*nakci) /* NAK our Configuration Information */
- __P((fsm *, u_char *, int, int));
- int (*rejci) /* Reject our Configuration Information */
- __P((fsm *, u_char *, int));
- int (*reqci) /* Request peer's Configuration Information */
- __P((fsm *, u_char *, int *, int));
- void (*up) /* Called when fsm reaches OPENED state */
- __P((fsm *));
- void (*down) /* Called when fsm leaves OPENED state */
- __P((fsm *));
- void (*starting) /* Called when we want the lower layer */
- __P((fsm *));
- void (*finished) /* Called when we don't want the lower layer */
- __P((fsm *));
- void (*protreject) /* Called when Protocol-Reject received */
- __P((int));
- void (*retransmit) /* Retransmission is necessary */
- __P((fsm *));
- int (*extcode) /* Called when unknown code received */
- __P((fsm *, int, int, u_char *, int));
- char *proto_name; /* String name for protocol (for messages) */
-} fsm_callbacks;
-
-
-/*
- * Link states.
- */
-#define INITIAL 0 /* Down, hasn't been opened */
-#define STARTING 1 /* Down, been opened */
-#define CLOSED 2 /* Up, hasn't been opened */
-#define STOPPED 3 /* Open, waiting for down event */
-#define CLOSING 4 /* Terminating the connection, not open */
-#define STOPPING 5 /* Terminating, but open */
-#define REQSENT 6 /* We've sent a Config Request */
-#define ACKRCVD 7 /* We've received a Config Ack */
-#define ACKSENT 8 /* We've sent a Config Ack */
-#define OPENED 9 /* Connection available */
-
-
-/*
- * Flags - indicate options controlling FSM operation
- */
-#define OPT_PASSIVE 1 /* Don't die if we don't get a response */
-#define OPT_RESTART 2 /* Treat 2nd OPEN as DOWN, UP */
-#define OPT_SILENT 4 /* Wait for peer to speak first */
-
-
-/*
- * Timeouts.
- */
-#define DEFTIMEOUT 3 /* Timeout time in seconds */
-#define DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
-#define DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
-#define DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
-
-
-/*
- * Prototypes
- */
-void fsm_init __P((fsm *));
-void fsm_lowerup __P((fsm *));
-void fsm_lowerdown __P((fsm *));
-void fsm_open __P((fsm *));
-void fsm_close __P((fsm *, char *));
-void fsm_input __P((fsm *, u_char *, int));
-void fsm_protreject __P((fsm *));
-void fsm_sdata __P((fsm *, int, int, u_char *, int));
-
-
-/*
- * Variables
- */
-extern int peer_mru[]; /* currently negotiated peer MRU (per unit) */
diff --git a/pppd_plugin/src/pppd/ipcp.h b/pppd_plugin/src/pppd/ipcp.h
deleted file mode 100644
index 6cf14c9..0000000
--- a/pppd_plugin/src/pppd/ipcp.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * ipcp.h - IP Control Protocol definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: ipcp.h,v 1.14 2002/12/04 23:03:32 paulus Exp $
- */
-
-/*
- * Options.
- */
-#define CI_ADDRS 1 /* IP Addresses */
-#define CI_COMPRESSTYPE 2 /* Compression Type */
-#define CI_ADDR 3
-
-#define CI_MS_DNS1 129 /* Primary DNS value */
-#define CI_MS_WINS1 130 /* Primary WINS value */
-#define CI_MS_DNS2 131 /* Secondary DNS value */
-#define CI_MS_WINS2 132 /* Secondary WINS value */
-
-#define MAX_STATES 16 /* from slcompress.h */
-
-#define IPCP_VJMODE_OLD 1 /* "old" mode (option # = 0x0037) */
-#define IPCP_VJMODE_RFC1172 2 /* "old-rfc"mode (option # = 0x002d) */
-#define IPCP_VJMODE_RFC1332 3 /* "new-rfc"mode (option # = 0x002d, */
- /* maxslot and slot number compression) */
-
-#define IPCP_VJ_COMP 0x002d /* current value for VJ compression option*/
-#define IPCP_VJ_COMP_OLD 0x0037 /* "old" (i.e, broken) value for VJ */
- /* compression option*/
-
-typedef struct ipcp_options {
- bool neg_addr; /* Negotiate IP Address? */
- bool old_addrs; /* Use old (IP-Addresses) option? */
- bool req_addr; /* Ask peer to send IP address? */
- bool default_route; /* Assign default route through interface? */
- bool proxy_arp; /* Make proxy ARP entry for peer? */
- bool neg_vj; /* Van Jacobson Compression? */
- bool old_vj; /* use old (short) form of VJ option? */
- bool accept_local; /* accept peer's value for ouraddr */
- bool accept_remote; /* accept peer's value for hisaddr */
- bool req_dns1; /* Ask peer to send primary DNS address? */
- bool req_dns2; /* Ask peer to send secondary DNS address? */
- int vj_protocol; /* protocol value to use in VJ option */
- int maxslotindex; /* values for RFC1332 VJ compression neg. */
- bool cflag;
- u_int32_t ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */
- u_int32_t dnsaddr[2]; /* Primary and secondary MS DNS entries */
- u_int32_t winsaddr[2]; /* Primary and secondary MS WINS entries */
-} ipcp_options;
-
-extern fsm ipcp_fsm[];
-extern ipcp_options ipcp_wantoptions[];
-extern ipcp_options ipcp_gotoptions[];
-extern ipcp_options ipcp_allowoptions[];
-extern ipcp_options ipcp_hisoptions[];
-
-char *ip_ntoa __P((u_int32_t));
-
-extern struct protent ipcp_protent;
diff --git a/pppd_plugin/src/pppd/ipv6cp.h b/pppd_plugin/src/pppd/ipv6cp.h
deleted file mode 100644
index cc4568d..0000000
--- a/pppd_plugin/src/pppd/ipv6cp.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * ipv6cp.h - PPP IPV6 Control Protocol.
- *
- * Copyright (c) 1999 Tommi Komulainen. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Tommi Komulainen
- * <Tommi.Komulainen@iki.fi>".
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-/* Original version, based on RFC2023 :
-
- Copyright (c) 1995, 1996, 1997 Francis.Dupont@inria.fr, INRIA Rocquencourt,
- Alain.Durand@imag.fr, IMAG,
- Jean-Luc.Richier@imag.fr, IMAG-LSR.
-
- Copyright (c) 1998, 1999 Francis.Dupont@inria.fr, GIE DYADE,
- Alain.Durand@imag.fr, IMAG,
- Jean-Luc.Richier@imag.fr, IMAG-LSR.
-
- Ce travail a été fait au sein du GIE DYADE (Groupement d'Intérêt
- Économique ayant pour membres BULL S.A. et l'INRIA).
-
- Ce logiciel informatique est disponible aux conditions
- usuelles dans la recherche, c'est-à-dire qu'il peut
- être utilisé, copié, modifié, distribué à l'unique
- condition que ce texte soit conservé afin que
- l'origine de ce logiciel soit reconnue.
-
- Le nom de l'Institut National de Recherche en Informatique
- et en Automatique (INRIA), de l'IMAG, ou d'une personne morale
- ou physique ayant participé à l'élaboration de ce logiciel ne peut
- être utilisé sans son accord préalable explicite.
-
- Ce logiciel est fourni tel quel sans aucune garantie,
- support ou responsabilité d'aucune sorte.
- Ce logiciel est dérivé de sources d'origine
- "University of California at Berkeley" et
- "Digital Equipment Corporation" couvertes par des copyrights.
-
- L'Institut d'Informatique et de Mathématiques Appliquées de Grenoble (IMAG)
- est une fédération d'unités mixtes de recherche du CNRS, de l'Institut National
- Polytechnique de Grenoble et de l'Université Joseph Fourier regroupant
- sept laboratoires dont le laboratoire Logiciels, Systèmes, Réseaux (LSR).
-
- This work has been done in the context of GIE DYADE (joint R & D venture
- between BULL S.A. and INRIA).
-
- This software is available with usual "research" terms
- with the aim of retain credits of the software.
- Permission to use, copy, modify and distribute this software for any
- purpose and without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies,
- and the name of INRIA, IMAG, or any contributor not be used in advertising
- or publicity pertaining to this material without the prior explicit
- permission. The software is provided "as is" without any
- warranties, support or liabilities of any kind.
- This software is derived from source code from
- "University of California at Berkeley" and
- "Digital Equipment Corporation" protected by copyrights.
-
- Grenoble's Institute of Computer Science and Applied Mathematics (IMAG)
- is a federation of seven research units funded by the CNRS, National
- Polytechnic Institute of Grenoble and University Joseph Fourier.
- The research unit in Software, Systems, Networks (LSR) is member of IMAG.
-*/
-
-/*
- * Derived from :
- *
- *
- * ipcp.h - IP Control Protocol definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: ipv6cp.h,v 1.7 2002/12/04 23:03:32 paulus Exp $
- */
-
-/*
- * Options.
- */
-#define CI_IFACEID 1 /* Interface Identifier */
-#define CI_COMPRESSTYPE 2 /* Compression Type */
-
-/* No compression types yet defined.
- *#define IPV6CP_COMP 0x004f
- */
-typedef struct ipv6cp_options {
- int neg_ifaceid; /* Negotiate interface identifier? */
- int req_ifaceid; /* Ask peer to send interface identifier? */
- int accept_local; /* accept peer's value for iface id? */
- int opt_local; /* ourtoken set by option */
- int opt_remote; /* histoken set by option */
- int use_ip; /* use IP as interface identifier */
-#if defined(SOL2) || defined(__linux__)
- int use_persistent; /* use uniquely persistent value for address */
-#endif /* defined(SOL2) */
- int neg_vj; /* Van Jacobson Compression? */
- u_short vj_protocol; /* protocol value to use in VJ option */
- eui64_t ourid, hisid; /* Interface identifiers */
-} ipv6cp_options;
-
-extern fsm ipv6cp_fsm[];
-extern ipv6cp_options ipv6cp_wantoptions[];
-extern ipv6cp_options ipv6cp_gotoptions[];
-extern ipv6cp_options ipv6cp_allowoptions[];
-extern ipv6cp_options ipv6cp_hisoptions[];
-
-extern struct protent ipv6cp_protent;
diff --git a/pppd_plugin/src/pppd/ipxcp.h b/pppd_plugin/src/pppd/ipxcp.h
deleted file mode 100644
index 396b6bb..0000000
--- a/pppd_plugin/src/pppd/ipxcp.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * ipxcp.h - IPX Control Protocol definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: ipxcp.h,v 1.5 2002/12/04 23:03:32 paulus Exp $
- */
-
-/*
- * Options.
- */
-#define IPX_NETWORK_NUMBER 1 /* IPX Network Number */
-#define IPX_NODE_NUMBER 2
-#define IPX_COMPRESSION_PROTOCOL 3
-#define IPX_ROUTER_PROTOCOL 4
-#define IPX_ROUTER_NAME 5
-#define IPX_COMPLETE 6
-
-/* Values for the router protocol */
-#define IPX_NONE 0
-#define RIP_SAP 2
-#define NLSP 4
-
-typedef struct ipxcp_options {
- bool neg_node; /* Negotiate IPX node number? */
- bool req_node; /* Ask peer to send IPX node number? */
-
- bool neg_nn; /* Negotiate IPX network number? */
- bool req_nn; /* Ask peer to send IPX network number */
-
- bool neg_name; /* Negotiate IPX router name */
- bool neg_complete; /* Negotiate completion */
- bool neg_router; /* Negotiate IPX router number */
-
- bool accept_local; /* accept peer's value for ournode */
- bool accept_remote; /* accept peer's value for hisnode */
- bool accept_network; /* accept network number */
-
- bool tried_nlsp; /* I have suggested NLSP already */
- bool tried_rip; /* I have suggested RIP/SAP already */
-
- u_int32_t his_network; /* base network number */
- u_int32_t our_network; /* our value for network number */
- u_int32_t network; /* the final network number */
-
- u_char his_node[6]; /* peer's node number */
- u_char our_node[6]; /* our node number */
- u_char name [48]; /* name of the router */
- int router; /* routing protocol */
-} ipxcp_options;
-
-extern fsm ipxcp_fsm[];
-extern ipxcp_options ipxcp_wantoptions[];
-extern ipxcp_options ipxcp_gotoptions[];
-extern ipxcp_options ipxcp_allowoptions[];
-extern ipxcp_options ipxcp_hisoptions[];
-
-extern struct protent ipxcp_protent;
diff --git a/pppd_plugin/src/pppd/lcp.h b/pppd_plugin/src/pppd/lcp.h
deleted file mode 100644
index 23f3c84..0000000
--- a/pppd_plugin/src/pppd/lcp.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * lcp.h - Link Control Protocol definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: lcp.h,v 1.19 2002/12/04 23:03:32 paulus Exp $
- */
-
-/*
- * Options.
- */
-#define CI_MRU 1 /* Maximum Receive Unit */
-#define CI_ASYNCMAP 2 /* Async Control Character Map */
-#define CI_AUTHTYPE 3 /* Authentication Type */
-#define CI_QUALITY 4 /* Quality Protocol */
-#define CI_MAGICNUMBER 5 /* Magic Number */
-#define CI_PCOMPRESSION 7 /* Protocol Field Compression */
-#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */
-#define CI_CALLBACK 13 /* callback */
-#define CI_MRRU 17 /* max reconstructed receive unit; multilink */
-#define CI_SSNHF 18 /* short sequence numbers for multilink */
-#define CI_EPDISC 19 /* endpoint discriminator */
-
-/*
- * LCP-specific packet types.
- */
-#define PROTREJ 8 /* Protocol Reject */
-#define ECHOREQ 9 /* Echo Request */
-#define ECHOREP 10 /* Echo Reply */
-#define DISCREQ 11 /* Discard Request */
-#define CBCP_OPT 6 /* Use callback control protocol */
-
-/*
- * The state of options is described by an lcp_options structure.
- */
-typedef struct lcp_options {
- bool passive; /* Don't die if we don't get a response */
- bool silent; /* Wait for the other end to start first */
- bool restart; /* Restart vs. exit after close */
- bool neg_mru; /* Negotiate the MRU? */
- bool neg_asyncmap; /* Negotiate the async map? */
- bool neg_upap; /* Ask for UPAP authentication? */
- bool neg_chap; /* Ask for CHAP authentication? */
- bool neg_eap; /* Ask for EAP authentication? */
- bool neg_magicnumber; /* Ask for magic number? */
- bool neg_pcompression; /* HDLC Protocol Field Compression? */
- bool neg_accompression; /* HDLC Address/Control Field Compression? */
- bool neg_lqr; /* Negotiate use of Link Quality Reports */
- bool neg_cbcp; /* Negotiate use of CBCP */
- bool neg_mrru; /* negotiate multilink MRRU */
- bool neg_ssnhf; /* negotiate short sequence numbers */
- bool neg_endpoint; /* negotiate endpoint discriminator */
- int mru; /* Value of MRU */
- int mrru; /* Value of MRRU, and multilink enable */
- u_char chap_mdtype; /* which MD types (hashing algorithm) */
- u_int32_t asyncmap; /* Value of async map */
- u_int32_t magicnumber;
- int numloops; /* Number of loops during magic number neg. */
- u_int32_t lqr_period; /* Reporting period for LQR 1/100ths second */
- struct epdisc endpoint; /* endpoint discriminator */
-} lcp_options;
-
-extern fsm lcp_fsm[];
-extern lcp_options lcp_wantoptions[];
-extern lcp_options lcp_gotoptions[];
-extern lcp_options lcp_allowoptions[];
-extern lcp_options lcp_hisoptions[];
-
-#define DEFMRU 1500 /* Try for this */
-#define MINMRU 128 /* No MRUs below this */
-#define MAXMRU 16384 /* Normally limit MRU to this */
-
-void lcp_open __P((int));
-void lcp_close __P((int, char *));
-void lcp_lowerup __P((int));
-void lcp_lowerdown __P((int));
-void lcp_sprotrej __P((int, u_char *, int)); /* send protocol reject */
-
-extern struct protent lcp_protent;
-
-/* Default number of times we receive our magic number from the peer
- before deciding the link is looped-back. */
-#define DEFLOOPBACKFAIL 10
diff --git a/pppd_plugin/src/pppd/magic.h b/pppd_plugin/src/pppd/magic.h
deleted file mode 100644
index c81213b..0000000
--- a/pppd_plugin/src/pppd/magic.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * magic.h - PPP Magic Number definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: magic.h,v 1.5 2003/06/11 23:56:26 paulus Exp $
- */
-
-void magic_init __P((void)); /* Initialize the magic number generator */
-u_int32_t magic __P((void)); /* Returns the next magic number */
-
-/* Fill buffer with random bytes */
-void random_bytes __P((unsigned char *buf, int len));
diff --git a/pppd_plugin/src/pppd/md4.h b/pppd_plugin/src/pppd/md4.h
deleted file mode 100644
index 80e8f9a..0000000
--- a/pppd_plugin/src/pppd/md4.h
+++ /dev/null
@@ -1,64 +0,0 @@
-
-/*
-** ********************************************************************
-** md4.h -- Header file for implementation of **
-** MD4 Message Digest Algorithm **
-** Updated: 2/13/90 by Ronald L. Rivest **
-** (C) 1990 RSA Data Security, Inc. **
-** ********************************************************************
-*/
-
-#ifndef __P
-# if defined(__STDC__) || defined(__GNUC__)
-# define __P(x) x
-# else
-# define __P(x) ()
-# endif
-#endif
-
-
-/* MDstruct is the data structure for a message digest computation.
-*/
-typedef struct {
- unsigned int buffer[4]; /* Holds 4-word result of MD computation */
- unsigned char count[8]; /* Number of bits processed so far */
- unsigned int done; /* Nonzero means MD computation finished */
-} MD4_CTX;
-
-/* MD4Init(MD4_CTX *)
-** Initialize the MD4_CTX prepatory to doing a message digest
-** computation.
-*/
-extern void MD4Init __P((MD4_CTX *MD));
-
-/* MD4Update(MD,X,count)
-** Input: X -- a pointer to an array of unsigned characters.
-** count -- the number of bits of X to use (an unsigned int).
-** Updates MD using the first "count" bits of X.
-** The array pointed to by X is not modified.
-** If count is not a multiple of 8, MD4Update uses high bits of
-** last byte.
-** This is the basic input routine for a user.
-** The routine terminates the MD computation when count < 512, so
-** every MD computation should end with one call to MD4Update with a
-** count less than 512. Zero is OK for a count.
-*/
-extern void MD4Update __P((MD4_CTX *MD, unsigned char *X, unsigned int count));
-
-/* MD4Print(MD)
-** Prints message digest buffer MD as 32 hexadecimal digits.
-** Order is from low-order byte of buffer[0] to high-order byte
-** of buffer[3].
-** Each byte is printed with high-order hexadecimal digit first.
-*/
-extern void MD4Print __P((MD4_CTX *));
-
-/* MD4Final(buf, MD)
-** Returns message digest from MD and terminates the message
-** digest computation.
-*/
-extern void MD4Final __P((unsigned char *, MD4_CTX *));
-
-/*
-** End of md4.h
-****************************(cut)***********************************/
diff --git a/pppd_plugin/src/pppd/md5.h b/pppd_plugin/src/pppd/md5.h
deleted file mode 100644
index f7a0c96..0000000
--- a/pppd_plugin/src/pppd/md5.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- ***********************************************************************
- ** md5.h -- header file for implementation of MD5 **
- ** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
- ** Created: 2/17/90 RLR **
- ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
- ** Revised (for MD5): RLR 4/27/91 **
- ** -- G modified to have y&~z instead of y&z **
- ** -- FF, GG, HH modified to add in last register done **
- ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
- ** -- distinct additive constant for each step **
- ** -- round 4 added, working mod 7 **
- ***********************************************************************
- */
-
-/*
- ***********************************************************************
- ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
- ** **
- ** License to copy and use this software is granted provided that **
- ** it is identified as the "RSA Data Security, Inc. MD5 Message- **
- ** Digest Algorithm" in all material mentioning or referencing this **
- ** software or this function. **
- ** **
- ** License is also granted to make and use derivative works **
- ** provided that such works are identified as "derived from the RSA **
- ** Data Security, Inc. MD5 Message-Digest Algorithm" in all **
- ** material mentioning or referencing the derived work. **
- ** **
- ** RSA Data Security, Inc. makes no representations concerning **
- ** either the merchantability of this software or the suitability **
- ** of this software for any particular purpose. It is provided "as **
- ** is" without express or implied warranty of any kind. **
- ** **
- ** These notices must be retained in any copies of any part of this **
- ** documentation and/or software. **
- ***********************************************************************
- */
-
-#ifndef __MD5_INCLUDE__
-
-/* typedef a 32-bit type */
-#ifdef _LP64
-typedef unsigned int UINT4;
-typedef int INT4;
-#else
-typedef unsigned long UINT4;
-typedef long INT4;
-#endif
-#define _UINT4_T
-
-/* Data structure for MD5 (Message-Digest) computation */
-typedef struct {
- UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
- UINT4 buf[4]; /* scratch buffer */
- unsigned char in[64]; /* input buffer */
- unsigned char digest[16]; /* actual digest after MD5Final call */
-} MD5_CTX;
-
-void MD5_Init ();
-void MD5_Update ();
-void MD5_Final ();
-
-#define __MD5_INCLUDE__
-#endif /* __MD5_INCLUDE__ */
diff --git a/pppd_plugin/src/pppd/pathnames.h b/pppd_plugin/src/pppd/pathnames.h
deleted file mode 100644
index 555f40f..0000000
--- a/pppd_plugin/src/pppd/pathnames.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * define path names
- *
- * $Id: pathnames.h,v 1.16 2004/11/13 12:02:22 paulus Exp $
- */
-
-#ifdef HAVE_PATHS_H
-#include <paths.h>
-
-#else /* HAVE_PATHS_H */
-#ifndef _PATH_VARRUN
-#define _PATH_VARRUN "/etc/ppp/"
-#endif
-#define _PATH_DEVNULL "/dev/null"
-#endif /* HAVE_PATHS_H */
-
-#ifndef _ROOT_PATH
-#define _ROOT_PATH
-#endif
-
-#define _PATH_UPAPFILE _ROOT_PATH "/etc/ppp/pap-secrets"
-#define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets"
-#define _PATH_SRPFILE _ROOT_PATH "/etc/ppp/srp-secrets"
-#define _PATH_SYSOPTIONS _ROOT_PATH "/etc/ppp/options"
-#define _PATH_IPUP _ROOT_PATH "/etc/ppp/ip-up"
-#define _PATH_IPDOWN _ROOT_PATH "/etc/ppp/ip-down"
-#define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up"
-#define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
-#define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
-#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
-#define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
-#define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf"
-
-#define _PATH_USEROPT ".ppprc"
-#define _PATH_PSEUDONYM ".ppp_pseudonym"
-
-#ifdef INET6
-#define _PATH_IPV6UP _ROOT_PATH "/etc/ppp/ipv6-up"
-#define _PATH_IPV6DOWN _ROOT_PATH "/etc/ppp/ipv6-down"
-#endif
-
-#ifdef IPX_CHANGE
-#define _PATH_IPXUP _ROOT_PATH "/etc/ppp/ipx-up"
-#define _PATH_IPXDOWN _ROOT_PATH "/etc/ppp/ipx-down"
-#endif /* IPX_CHANGE */
-
-#ifdef __STDC__
-#define _PATH_PPPDB _ROOT_PATH _PATH_VARRUN "pppd2.tdb"
-#else /* __STDC__ */
-#ifdef HAVE_PATHS_H
-#define _PATH_PPPDB "/var/run/pppd2.tdb"
-#else
-#define _PATH_PPPDB "/etc/ppp/pppd2.tdb"
-#endif
-#endif /* __STDC__ */
-
-#ifdef PLUGIN
-#define _PATH_PLUGIN "/usr/lib/pppd/" VERSION
-#endif /* PLUGIN */
diff --git a/pppd_plugin/src/pppd/pppcrypt.h b/pppd_plugin/src/pppd/pppcrypt.h
deleted file mode 100644
index adcdcbc..0000000
--- a/pppd_plugin/src/pppd/pppcrypt.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * pppcrypt.c - PPP/DES linkage for MS-CHAP and EAP SRP-SHA1
- *
- * Extracted from chap_ms.c by James Carlson.
- *
- * Copyright (c) 1995 Eric Rosenquist. 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. The name(s) of the authors of this software must not be used to
- * endorse or promote products derived from this software without
- * prior written permission.
- *
- * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifndef PPPCRYPT_H
-#define PPPCRYPT_H
-
-#ifdef HAVE_CRYPT_H
-#include <crypt.h>
-#endif
-
-#ifndef USE_CRYPT
-#include <des.h>
-#endif
-
-extern bool DesSetkey __P((u_char *));
-extern bool DesEncrypt __P((u_char *, u_char *));
-extern bool DesDecrypt __P((u_char *, u_char *));
-
-#endif /* PPPCRYPT_H */
diff --git a/pppd_plugin/src/pppd/pppd.h b/pppd_plugin/src/pppd/pppd.h
deleted file mode 100644
index 8866bc7..0000000
--- a/pppd_plugin/src/pppd/pppd.h
+++ /dev/null
@@ -1,904 +0,0 @@
-/*
- * pppd.h - PPP daemon global declarations.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: pppd.h,v 1.88 2004/11/13 12:02:22 paulus Exp $
- */
-
-/*
- * TODO:
- */
-
-#ifndef __PPPD_H__
-#define __PPPD_H__
-
-#include <stdio.h> /* for FILE */
-#include <limits.h> /* for NGROUPS_MAX */
-#include <sys/param.h> /* for MAXPATHLEN and BSD4_4, if defined */
-#include <sys/types.h> /* for u_int32_t, if defined */
-#include <sys/time.h> /* for struct timeval */
-#include <net/ppp_defs.h>
-
-#if defined(__STDC__)
-#include <stdarg.h>
-#define __V(x) x
-#else
-#include <varargs.h>
-#define __V(x) (va_alist) va_dcl
-#define const
-#define volatile
-#endif
-
-#ifdef INET6
-#include "eui64.h"
-#endif
-
-/*
- * Limits.
- */
-
-#define NUM_PPP 1 /* One PPP interface supported (per process) */
-#define MAXWORDLEN 1024 /* max length of word in file (incl null) */
-#define MAXARGS 1 /* max # args to a command */
-#define MAXNAMELEN 256 /* max length of hostname or name for auth */
-#define MAXSECRETLEN 256 /* max length of password or secret */
-
-/*
- * Option descriptor structure.
- */
-
-typedef unsigned char bool;
-
-enum opt_type {
- o_special_noarg = 0,
- o_special = 1,
- o_bool,
- o_int,
- o_uint32,
- o_string,
- o_wild
-};
-
-typedef struct {
- char *name; /* name of the option */
- enum opt_type type;
- void *addr;
- char *description;
- unsigned int flags;
- void *addr2;
- int upper_limit;
- int lower_limit;
- const char *source;
- short int priority;
- short int winner;
-} option_t;
-
-/* Values for flags */
-#define OPT_VALUE 0xff /* mask for presupplied value */
-#define OPT_HEX 0x100 /* int option is in hex */
-#define OPT_NOARG 0x200 /* option doesn't take argument */
-#define OPT_OR 0x400 /* OR in argument to value */
-#define OPT_INC 0x800 /* increment value */
-#define OPT_A2OR 0x800 /* for o_bool, OR arg to *(u_char *)addr2 */
-#define OPT_PRIV 0x1000 /* privileged option */
-#define OPT_STATIC 0x2000 /* string option goes into static array */
-#define OPT_LLIMIT 0x4000 /* check value against lower limit */
-#define OPT_ULIMIT 0x8000 /* check value against upper limit */
-#define OPT_LIMITS (OPT_LLIMIT|OPT_ULIMIT)
-#define OPT_ZEROOK 0x10000 /* 0 value is OK even if not within limits */
-#define OPT_HIDE 0x10000 /* for o_string, print value as ?????? */
-#define OPT_A2LIST 0x10000 /* for o_special, keep list of values */
-#define OPT_A2CLRB 0x10000 /* o_bool, clr val bits in *(u_char *)addr2 */
-#define OPT_NOINCR 0x20000 /* value mustn't be increased */
-#define OPT_ZEROINF 0x40000 /* with OPT_NOINCR, 0 == infinity */
-#define OPT_PRIO 0x80000 /* process option priorities for this option */
-#define OPT_PRIOSUB 0x100000 /* subsidiary member of priority group */
-#define OPT_ALIAS 0x200000 /* option is alias for previous option */
-#define OPT_A2COPY 0x400000 /* addr2 -> second location to rcv value */
-#define OPT_ENABLE 0x800000 /* use *addr2 as enable for option */
-#define OPT_A2CLR 0x1000000 /* clear *(bool *)addr2 */
-#define OPT_PRIVFIX 0x2000000 /* user can't override if set by root */
-#define OPT_INITONLY 0x4000000 /* option can only be set in init phase */
-#define OPT_DEVEQUIV 0x8000000 /* equiv to device name */
-#define OPT_DEVNAM (OPT_INITONLY | OPT_DEVEQUIV)
-#define OPT_A2PRINTER 0x10000000 /* *addr2 is a fn for printing option */
-#define OPT_A2STRVAL 0x20000000 /* *addr2 points to current string value */
-#define OPT_NOPRINT 0x40000000 /* don't print this option at all */
-
-#define OPT_VAL(x) ((x) & OPT_VALUE)
-
-/* Values for priority */
-#define OPRIO_DEFAULT 0 /* a default value */
-#define OPRIO_CFGFILE 1 /* value from a configuration file */
-#define OPRIO_CMDLINE 2 /* value from the command line */
-#define OPRIO_SECFILE 3 /* value from options in a secrets file */
-#define OPRIO_ROOT 100 /* added to priority if OPT_PRIVFIX && root */
-
-#ifndef GIDSET_TYPE
-#define GIDSET_TYPE gid_t
-#endif
-
-/* Structure representing a list of permitted IP addresses. */
-struct permitted_ip {
- int permit; /* 1 = permit, 0 = forbid */
- u_int32_t base; /* match if (addr & mask) == base */
- u_int32_t mask; /* base and mask are in network byte order */
-};
-
-/*
- * Unfortunately, the linux kernel driver uses a different structure
- * for statistics from the rest of the ports.
- * This structure serves as a common representation for the bits
- * pppd needs.
- */
-struct pppd_stats {
- unsigned int bytes_in;
- unsigned int bytes_out;
- unsigned int pkts_in;
- unsigned int pkts_out;
-};
-
-/* Used for storing a sequence of words. Usually malloced. */
-struct wordlist {
- struct wordlist *next;
- char *word;
-};
-
-/* An endpoint discriminator, used with multilink. */
-#define MAX_ENDP_LEN 20 /* maximum length of discriminator value */
-struct epdisc {
- unsigned char class;
- unsigned char length;
- unsigned char value[MAX_ENDP_LEN];
-};
-
-/* values for epdisc.class */
-#define EPD_NULL 0 /* null discriminator, no data */
-#define EPD_LOCAL 1
-#define EPD_IP 2
-#define EPD_MAC 3
-#define EPD_MAGIC 4
-#define EPD_PHONENUM 5
-
-typedef void (*notify_func) __P((void *, int));
-
-struct notifier {
- struct notifier *next;
- notify_func func;
- void *arg;
-};
-
-/*
- * Global variables.
- */
-
-extern int hungup; /* Physical layer has disconnected */
-extern int ifunit; /* Interface unit number */
-extern char ifname[]; /* Interface name */
-extern char hostname[]; /* Our hostname */
-extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
-extern int devfd; /* fd of underlying device */
-extern int fd_ppp; /* fd for talking PPP */
-extern int phase; /* Current state of link - see values below */
-extern int baud_rate; /* Current link speed in bits/sec */
-extern char *progname; /* Name of this program */
-extern int redirect_stderr;/* Connector's stderr should go to file */
-extern char peer_authname[];/* Authenticated name of peer */
-extern int auth_done[NUM_PPP]; /* Methods actually used for auth */
-extern int privileged; /* We were run by real-uid root */
-extern int need_holdoff; /* Need holdoff period after link terminates */
-extern char **script_env; /* Environment variables for scripts */
-extern int detached; /* Have detached from controlling tty */
-extern GIDSET_TYPE groups[NGROUPS_MAX]; /* groups the user is in */
-extern int ngroups; /* How many groups valid in groups */
-extern struct pppd_stats link_stats; /* byte/packet counts etc. for link */
-extern int link_stats_valid; /* set if link_stats is valid */
-extern unsigned link_connect_time; /* time the link was up for */
-extern int using_pty; /* using pty as device (notty or pty opt.) */
-extern int log_to_fd; /* logging to this fd as well as syslog */
-extern bool log_default; /* log_to_fd is default (stdout) */
-extern char *no_ppp_msg; /* message to print if ppp not in kernel */
-extern volatile int status; /* exit status for pppd */
-extern bool devnam_fixed; /* can no longer change devnam */
-extern int unsuccess; /* # unsuccessful connection attempts */
-extern int do_callback; /* set if we want to do callback next */
-extern int doing_callback; /* set if this is a callback */
-extern int error_count; /* # of times error() has been called */
-extern char ppp_devnam[MAXPATHLEN];
-extern char remote_number[MAXNAMELEN]; /* Remote telephone number, if avail. */
-extern int ppp_session_number; /* Session number (eg PPPoE session) */
-extern int fd_devnull; /* fd open to /dev/null */
-
-extern int listen_time; /* time to listen first (ms) */
-extern bool doing_multilink;
-extern bool multilink_master;
-extern bool bundle_eof;
-extern bool bundle_terminating;
-
-extern struct notifier *pidchange; /* for notifications of pid changing */
-extern struct notifier *phasechange; /* for notifications of phase changes */
-extern struct notifier *exitnotify; /* for notification that we're exiting */
-extern struct notifier *sigreceived; /* notification of received signal */
-extern struct notifier *ip_up_notifier; /* IPCP has come up */
-extern struct notifier *ip_down_notifier; /* IPCP has gone down */
-extern struct notifier *auth_up_notifier; /* peer has authenticated */
-extern struct notifier *link_down_notifier; /* link has gone down */
-extern struct notifier *fork_notifier; /* we are a new child process */
-
-/* Values for do_callback and doing_callback */
-#define CALLBACK_DIALIN 1 /* we are expecting the call back */
-#define CALLBACK_DIALOUT 2 /* we are dialling out to call back */
-
-/*
- * Variables set by command-line options.
- */
-
-extern int debug; /* Debug flag */
-extern int kdebugflag; /* Tell kernel to print debug messages */
-extern int default_device; /* Using /dev/tty or equivalent */
-extern char devnam[MAXPATHLEN]; /* Device name */
-extern int crtscts; /* Use hardware flow control */
-extern bool modem; /* Use modem control lines */
-extern int inspeed; /* Input/Output speed requested */
-extern u_int32_t netmask; /* IP netmask to set on interface */
-extern bool lockflag; /* Create lock file to lock the serial dev */
-extern bool nodetach; /* Don't detach from controlling tty */
-extern bool updetach; /* Detach from controlling tty when link up */
-extern char *initializer; /* Script to initialize physical link */
-extern char *connect_script; /* Script to establish physical link */
-extern char *disconnect_script; /* Script to disestablish physical link */
-extern char *welcomer; /* Script to welcome client after connection */
-extern char *ptycommand; /* Command to run on other side of pty */
-extern int maxconnect; /* Maximum connect time (seconds) */
-extern char user[MAXNAMELEN];/* Our name for authenticating ourselves */
-extern char passwd[MAXSECRETLEN]; /* Password for PAP or CHAP */
-extern bool auth_required; /* Peer is required to authenticate */
-extern bool persist; /* Reopen link after it goes down */
-extern bool uselogin; /* Use /etc/passwd for checking PAP */
-extern char our_name[MAXNAMELEN];/* Our name for authentication purposes */
-extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
-extern bool explicit_remote;/* remote_name specified with remotename opt */
-extern bool demand; /* Do dial-on-demand */
-extern char *ipparam; /* Extra parameter for ip up/down scripts */
-extern bool cryptpap; /* Others' PAP passwords are encrypted */
-extern int idle_time_limit;/* Shut down link if idle for this long */
-extern int holdoff; /* Dead time before restarting */
-extern bool holdoff_specified; /* true if user gave a holdoff value */
-extern bool notty; /* Stdin/out is not a tty */
-extern char *pty_socket; /* Socket to connect to pty */
-extern char *record_file; /* File to record chars sent/received */
-extern bool sync_serial; /* Device is synchronous serial device */
-extern int maxfail; /* Max # of unsuccessful connection attempts */
-extern char linkname[MAXPATHLEN]; /* logical name for link */
-extern bool tune_kernel; /* May alter kernel settings as necessary */
-extern int connect_delay; /* Time to delay after connect script */
-extern int max_data_rate; /* max bytes/sec through charshunt */
-extern int req_unit; /* interface unit number to use */
-extern bool multilink; /* enable multilink operation */
-extern bool noendpoint; /* don't send or accept endpt. discrim. */
-extern char *bundle_name; /* bundle name for multilink */
-extern bool dump_options; /* print out option values */
-extern bool dryrun; /* check everything, print options, exit */
-extern int child_wait; /* # seconds to wait for children at end */
-
-#ifdef MAXOCTETS
-extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */
-extern int maxoctets_dir; /* Direction :
- 0 - in+out (default)
- 1 - in
- 2 - out
- 3 - max(in,out) */
-extern int maxoctets_timeout; /* Timeout for check of octets limit */
-#define PPP_OCTETS_DIRECTION_SUM 0
-#define PPP_OCTETS_DIRECTION_IN 1
-#define PPP_OCTETS_DIRECTION_OUT 2
-#define PPP_OCTETS_DIRECTION_MAXOVERAL 3
-/* same as previos, but little different on RADIUS side */
-#define PPP_OCTETS_DIRECTION_MAXSESSION 4
-#endif
-
-#ifdef PPP_FILTER
-extern struct bpf_program pass_filter; /* Filter for pkts to pass */
-extern struct bpf_program active_filter; /* Filter for link-active pkts */
-#endif
-
-#ifdef MSLANMAN
-extern bool ms_lanman; /* Use LanMan password instead of NT */
- /* Has meaning only with MS-CHAP challenges */
-#endif
-
-/* Values for auth_pending, auth_done */
-#define PAP_WITHPEER 0x1
-#define PAP_PEER 0x2
-#define CHAP_WITHPEER 0x4
-#define CHAP_PEER 0x8
-#define EAP_WITHPEER 0x10
-#define EAP_PEER 0x20
-
-/* Values for auth_done only */
-#define CHAP_MD5_WITHPEER 0x40
-#define CHAP_MD5_PEER 0x80
-#define CHAP_MS_SHIFT 8 /* LSB position for MS auths */
-#define CHAP_MS_WITHPEER 0x100
-#define CHAP_MS_PEER 0x200
-#define CHAP_MS2_WITHPEER 0x400
-#define CHAP_MS2_PEER 0x800
-
-extern char *current_option; /* the name of the option being parsed */
-extern int privileged_option; /* set iff the current option came from root */
-extern char *option_source; /* string saying where the option came from */
-extern int option_priority; /* priority of current options */
-
-/*
- * Values for phase.
- */
-#define PHASE_DEAD 0
-#define PHASE_INITIALIZE 1
-#define PHASE_SERIALCONN 2
-#define PHASE_DORMANT 3
-#define PHASE_ESTABLISH 4
-#define PHASE_AUTHENTICATE 5
-#define PHASE_CALLBACK 6
-#define PHASE_NETWORK 7
-#define PHASE_RUNNING 8
-#define PHASE_TERMINATE 9
-#define PHASE_DISCONNECT 10
-#define PHASE_HOLDOFF 11
-#define PHASE_MASTER 12
-
-/*
- * The following struct gives the addresses of procedures to call
- * for a particular protocol.
- */
-struct protent {
- u_short protocol; /* PPP protocol number */
- /* Initialization procedure */
- void (*init) __P((int unit));
- /* Process a received packet */
- void (*input) __P((int unit, u_char *pkt, int len));
- /* Process a received protocol-reject */
- void (*protrej) __P((int unit));
- /* Lower layer has come up */
- void (*lowerup) __P((int unit));
- /* Lower layer has gone down */
- void (*lowerdown) __P((int unit));
- /* Open the protocol */
- void (*open) __P((int unit));
- /* Close the protocol */
- void (*close) __P((int unit, char *reason));
- /* Print a packet in readable form */
- int (*printpkt) __P((u_char *pkt, int len,
- void (*printer) __P((void *, char *, ...)),
- void *arg));
- /* Process a received data packet */
- void (*datainput) __P((int unit, u_char *pkt, int len));
- bool enabled_flag; /* 0 iff protocol is disabled */
- char *name; /* Text name of protocol */
- char *data_name; /* Text name of corresponding data protocol */
- option_t *options; /* List of command-line options */
- /* Check requested options, assign defaults */
- void (*check_options) __P((void));
- /* Configure interface for demand-dial */
- int (*demand_conf) __P((int unit));
- /* Say whether to bring up link for this pkt */
- int (*active_pkt) __P((u_char *pkt, int len));
-};
-
-/* Table of pointers to supported protocols */
-extern struct protent *protocols[];
-
-/*
- * This struct contains pointers to a set of procedures for
- * doing operations on a "channel". A channel provides a way
- * to send and receive PPP packets - the canonical example is
- * a serial port device in PPP line discipline (or equivalently
- * with PPP STREAMS modules pushed onto it).
- */
-struct channel {
- /* set of options for this channel */
- option_t *options;
- /* find and process a per-channel options file */
- void (*process_extra_options) __P((void));
- /* check all the options that have been given */
- void (*check_options) __P((void));
- /* get the channel ready to do PPP, return a file descriptor */
- int (*connect) __P((void));
- /* we're finished with the channel */
- void (*disconnect) __P((void));
- /* put the channel into PPP `mode' */
- int (*establish_ppp) __P((int));
- /* take the channel out of PPP `mode', restore loopback if demand */
- void (*disestablish_ppp) __P((int));
- /* set the transmit-side PPP parameters of the channel */
- void (*send_config) __P((int, u_int32_t, int, int));
- /* set the receive-side PPP parameters of the channel */
- void (*recv_config) __P((int, u_int32_t, int, int));
- /* cleanup on error or normal exit */
- void (*cleanup) __P((void));
- /* close the device, called in children after fork */
- void (*close) __P((void));
-};
-
-extern struct channel *the_channel;
-
-/*
- * Prototypes.
- */
-
-/* Procedures exported from main.c. */
-void set_ifunit __P((int)); /* set stuff that depends on ifunit */
-void detach __P((void)); /* Detach from controlling tty */
-void die __P((int)); /* Cleanup and exit */
-void quit __P((void)); /* like die(1) */
-void novm __P((char *)); /* Say we ran out of memory, and die */
-void timeout __P((void (*func)(void *), void *arg, int s, int us));
- /* Call func(arg) after s.us seconds */
-void untimeout __P((void (*func)(void *), void *arg));
- /* Cancel call to func(arg) */
-void record_child __P((int, char *, void (*) (void *), void *));
-pid_t safe_fork __P((int, int, int)); /* Fork & close stuff in child */
-int device_script __P((char *cmd, int in, int out, int dont_wait));
- /* Run `cmd' with given stdin and stdout */
-pid_t run_program __P((char *prog, char **args, int must_exist,
- void (*done)(void *), void *arg));
- /* Run program prog with args in child */
-void reopen_log __P((void)); /* (re)open the connection to syslog */
-void print_link_stats __P((void)); /* Print stats, if available */
-void reset_link_stats __P((int)); /* Reset (init) stats when link goes up */
-void update_link_stats __P((int)); /* Get stats at link termination */
-void script_setenv __P((char *, char *, int)); /* set script env var */
-void script_unsetenv __P((char *)); /* unset script env var */
-void new_phase __P((int)); /* signal start of new phase */
-void add_notifier __P((struct notifier **, notify_func, void *));
-void remove_notifier __P((struct notifier **, notify_func, void *));
-void notify __P((struct notifier *, int));
-int ppp_send_config __P((int, int, u_int32_t, int, int));
-int ppp_recv_config __P((int, int, u_int32_t, int, int));
-void remove_pidfiles __P((void));
-void lock_db __P((void));
-void unlock_db __P((void));
-
-/* Procedures exported from tty.c. */
-void tty_init __P((void));
-
-/* Procedures exported from utils.c. */
-void log_packet __P((u_char *, int, char *, int));
- /* Format a packet and log it with syslog */
-void print_string __P((char *, int, void (*) (void *, char *, ...),
- void *)); /* Format a string for output */
-int slprintf __P((char *, int, char *, ...)); /* sprintf++ */
-int vslprintf __P((char *, int, char *, va_list)); /* vsprintf++ */
-size_t strlcpy __P((char *, const char *, size_t)); /* safe strcpy */
-size_t strlcat __P((char *, const char *, size_t)); /* safe strncpy */
-void dbglog __P((char *, ...)); /* log a debug message */
-void info __P((char *, ...)); /* log an informational message */
-void notice __P((char *, ...)); /* log a notice-level message */
-void warn __P((char *, ...)); /* log a warning message */
-void error __P((char *, ...)); /* log an error message */
-void fatal __P((char *, ...)); /* log an error message and die(1) */
-void init_pr_log __P((char *, int)); /* initialize for using pr_log */
-void pr_log __P((void *, char *, ...)); /* printer fn, output to syslog */
-void end_pr_log __P((void)); /* finish up after using pr_log */
-void dump_packet __P((const char *, u_char *, int));
- /* dump packet to debug log if interesting */
-ssize_t complete_read __P((int, void *, size_t));
- /* read a complete buffer */
-
-/* Procedures exported from auth.c */
-void link_required __P((int)); /* we are starting to use the link */
-void link_terminated __P((int)); /* we are finished with the link */
-void link_down __P((int)); /* the LCP layer has left the Opened state */
-void upper_layers_down __P((int));/* take all NCPs down */
-void link_established __P((int)); /* the link is up; authenticate now */
-void start_networks __P((int)); /* start all the network control protos */
-void continue_networks __P((int)); /* start network [ip, etc] control protos */
-void np_up __P((int, int)); /* a network protocol has come up */
-void np_down __P((int, int)); /* a network protocol has gone down */
-void np_finished __P((int, int)); /* a network protocol no longer needs link */
-void auth_peer_fail __P((int, int));
- /* peer failed to authenticate itself */
-void auth_peer_success __P((int, int, int, char *, int));
- /* peer successfully authenticated itself */
-void auth_withpeer_fail __P((int, int));
- /* we failed to authenticate ourselves */
-void auth_withpeer_success __P((int, int, int));
- /* we successfully authenticated ourselves */
-void auth_check_options __P((void));
- /* check authentication options supplied */
-void auth_reset __P((int)); /* check what secrets we have */
-int check_passwd __P((int, char *, int, char *, int, char **));
- /* Check peer-supplied username/password */
-int get_secret __P((int, char *, char *, char *, int *, int));
- /* get "secret" for chap */
-int get_srp_secret __P((int unit, char *client, char *server, char *secret,
- int am_server));
-int auth_ip_addr __P((int, u_int32_t));
- /* check if IP address is authorized */
-int auth_number __P((void)); /* check if remote number is authorized */
-int bad_ip_adrs __P((u_int32_t));
- /* check if IP address is unreasonable */
-
-/* Procedures exported from demand.c */
-void demand_conf __P((void)); /* config interface(s) for demand-dial */
-void demand_block __P((void)); /* set all NPs to queue up packets */
-void demand_unblock __P((void)); /* set all NPs to pass packets */
-void demand_discard __P((void)); /* set all NPs to discard packets */
-void demand_rexmit __P((int)); /* retransmit saved frames for an NP */
-int loop_chars __P((unsigned char *, int)); /* process chars from loopback */
-int loop_frame __P((unsigned char *, int)); /* should we bring link up? */
-
-/* Procedures exported from multilink.c */
-#ifdef HAVE_MULTILINK
-void mp_check_options __P((void)); /* Check multilink-related options */
-int mp_join_bundle __P((void)); /* join our link to an appropriate bundle */
-void mp_exit_bundle __P((void)); /* have disconnected our link from bundle */
-void mp_bundle_terminated __P((void));
-char *epdisc_to_str __P((struct epdisc *)); /* string from endpoint discrim. */
-int str_to_epdisc __P((struct epdisc *, char *)); /* endpt disc. from str */
-#else
-#define mp_bundle_terminated() /* nothing */
-#define mp_exit_bundle() /* nothing */
-#define doing_multilink 0
-#define multilink_master 0
-#endif
-
-/* Procedures exported from sys-*.c */
-void sys_init __P((void)); /* Do system-dependent initialization */
-void sys_cleanup __P((void)); /* Restore system state before exiting */
-int sys_check_options __P((void)); /* Check options specified */
-void sys_close __P((void)); /* Clean up in a child before execing */
-int ppp_available __P((void)); /* Test whether ppp kernel support exists */
-int get_pty __P((int *, int *, char *, int)); /* Get pty master/slave */
-int open_ppp_loopback __P((void)); /* Open loopback for demand-dialling */
-int tty_establish_ppp __P((int)); /* Turn serial port into a ppp interface */
-void tty_disestablish_ppp __P((int)); /* Restore port to normal operation */
-void generic_disestablish_ppp __P((int dev_fd)); /* Restore device setting */
-int generic_establish_ppp __P((int dev_fd)); /* Make a ppp interface */
-void make_new_bundle __P((int, int, int, int)); /* Create new bundle */
-int bundle_attach __P((int)); /* Attach link to existing bundle */
-void cfg_bundle __P((int, int, int, int)); /* Configure existing bundle */
-void destroy_bundle __P((void)); /* Tell driver to destroy bundle */
-void clean_check __P((void)); /* Check if line was 8-bit clean */
-void set_up_tty __P((int, int)); /* Set up port's speed, parameters, etc. */
-void restore_tty __P((int)); /* Restore port's original parameters */
-void setdtr __P((int, int)); /* Raise or lower port's DTR line */
-void output __P((int, u_char *, int)); /* Output a PPP packet */
-void wait_input __P((struct timeval *));
- /* Wait for input, with timeout */
-void add_fd __P((int)); /* Add fd to set to wait for */
-void remove_fd __P((int)); /* Remove fd from set to wait for */
-int read_packet __P((u_char *)); /* Read PPP packet */
-int get_loop_output __P((void)); /* Read pkts from loopback */
-void tty_send_config __P((int, u_int32_t, int, int));
- /* Configure i/f transmit parameters */
-void tty_set_xaccm __P((ext_accm));
- /* Set extended transmit ACCM */
-void tty_recv_config __P((int, u_int32_t, int, int));
- /* Configure i/f receive parameters */
-int ccp_test __P((int, u_char *, int, int));
- /* Test support for compression scheme */
-void ccp_flags_set __P((int, int, int));
- /* Set kernel CCP state */
-int ccp_fatal_error __P((int)); /* Test for fatal decomp error in kernel */
-int get_idle_time __P((int, struct ppp_idle *));
- /* Find out how long link has been idle */
-int get_ppp_stats __P((int, struct pppd_stats *));
- /* Return link statistics */
-void netif_set_mtu __P((int, int)); /* Set PPP interface MTU */
-int netif_get_mtu __P((int)); /* Get PPP interface MTU */
-int sifvjcomp __P((int, int, int, int));
- /* Configure VJ TCP header compression */
-int sifup __P((int)); /* Configure i/f up for one protocol */
-int sifnpmode __P((int u, int proto, enum NPmode mode));
- /* Set mode for handling packets for proto */
-int sifdown __P((int)); /* Configure i/f down for one protocol */
-int sifaddr __P((int, u_int32_t, u_int32_t, u_int32_t));
- /* Configure IPv4 addresses for i/f */
-int cifaddr __P((int, u_int32_t, u_int32_t));
- /* Reset i/f IP addresses */
-#ifdef INET6
-int sif6addr __P((int, eui64_t, eui64_t));
- /* Configure IPv6 addresses for i/f */
-int cif6addr __P((int, eui64_t, eui64_t));
- /* Remove an IPv6 address from i/f */
-#endif
-int sifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Create default route through i/f */
-int cifdefaultroute __P((int, u_int32_t, u_int32_t));
- /* Delete default route through i/f */
-int sifproxyarp __P((int, u_int32_t));
- /* Add proxy ARP entry for peer */
-int cifproxyarp __P((int, u_int32_t));
- /* Delete proxy ARP entry for peer */
-u_int32_t GetMask __P((u_int32_t)); /* Get appropriate netmask for address */
-int lock __P((char *)); /* Create lock file for device */
-int relock __P((int)); /* Rewrite lock file with new pid */
-void unlock __P((void)); /* Delete previously-created lock file */
-void logwtmp __P((const char *, const char *, const char *));
- /* Write entry to wtmp file */
-int get_host_seed __P((void)); /* Get host-dependent random number seed */
-int have_route_to __P((u_int32_t)); /* Check if route to addr exists */
-#ifdef PPP_FILTER
-int set_filters __P((struct bpf_program *pass, struct bpf_program *active));
- /* Set filter programs in kernel */
-#endif
-#ifdef IPX_CHANGE
-int sipxfaddr __P((int, unsigned long, unsigned char *));
-int cipxfaddr __P((int));
-#endif
-int get_if_hwaddr __P((u_char *addr, char *name));
-char *get_first_ethernet __P((void));
-
-/* Procedures exported from options.c */
-int setipaddr __P((char *, char **, int)); /* Set local/remote ip addresses */
-int parse_args __P((int argc, char **argv));
- /* Parse options from arguments given */
-int options_from_file __P((char *filename, int must_exist, int check_prot,
- int privileged));
- /* Parse options from an options file */
-int options_from_user __P((void)); /* Parse options from user's .ppprc */
-int options_for_tty __P((void)); /* Parse options from /etc/ppp/options.tty */
-int options_from_list __P((struct wordlist *, int privileged));
- /* Parse options from a wordlist */
-int getword __P((FILE *f, char *word, int *newlinep, char *filename));
- /* Read a word from a file */
-void option_error __P((char *fmt, ...));
- /* Print an error message about an option */
-int int_option __P((char *, int *));
- /* Simplified number_option for decimal ints */
-void add_options __P((option_t *)); /* Add extra options */
-void check_options __P((void)); /* check values after all options parsed */
-int override_value __P((const char *, int, const char *));
- /* override value if permitted by priority */
-void print_options __P((void (*) __P((void *, char *, ...)), void *));
- /* print out values of all options */
-
-int parse_dotted_ip __P((char *, u_int32_t *));
-
-/*
- * Hooks to enable plugins to change various things.
- */
-extern int (*new_phase_hook) __P((int));
-extern int (*idle_time_hook) __P((struct ppp_idle *));
-extern int (*holdoff_hook) __P((void));
-extern int (*pap_check_hook) __P((void));
-extern int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp,
- struct wordlist **paddrs,
- struct wordlist **popts));
-extern void (*pap_logout_hook) __P((void));
-extern int (*pap_passwd_hook) __P((char *user, char *passwd));
-extern int (*allowed_address_hook) __P((u_int32_t addr));
-extern void (*ip_up_hook) __P((void));
-extern void (*ip_down_hook) __P((void));
-extern void (*ip_choose_hook) __P((u_int32_t *));
-
-extern int (*chap_check_hook) __P((void));
-extern int (*chap_passwd_hook) __P((char *user, char *passwd));
-
-/* Let a plugin snoop sent and received packets. Useful for L2TP */
-extern void (*snoop_recv_hook) __P((unsigned char *p, int len));
-extern void (*snoop_send_hook) __P((unsigned char *p, int len));
-
-/*
- * Inline versions of get/put char/short/long.
- * Pointer is advanced; we assume that both arguments
- * are lvalues and will already be in registers.
- * cp MUST be u_char *.
- */
-#define GETCHAR(c, cp) { \
- (c) = *(cp)++; \
-}
-#define PUTCHAR(c, cp) { \
- *(cp)++ = (u_char) (c); \
-}
-
-
-#define GETSHORT(s, cp) { \
- (s) = *(cp)++ << 8; \
- (s) |= *(cp)++; \
-}
-#define PUTSHORT(s, cp) { \
- *(cp)++ = (u_char) ((s) >> 8); \
- *(cp)++ = (u_char) (s); \
-}
-
-#define GETLONG(l, cp) { \
- (l) = *(cp)++ << 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; (l) <<= 8; \
- (l) |= *(cp)++; \
-}
-#define PUTLONG(l, cp) { \
- *(cp)++ = (u_char) ((l) >> 24); \
- *(cp)++ = (u_char) ((l) >> 16); \
- *(cp)++ = (u_char) ((l) >> 8); \
- *(cp)++ = (u_char) (l); \
-}
-
-#define INCPTR(n, cp) ((cp) += (n))
-#define DECPTR(n, cp) ((cp) -= (n))
-
-/*
- * System dependent definitions for user-level 4.3BSD UNIX implementation.
- */
-
-#define TIMEOUT(r, f, t) timeout((r), (f), (t), 0)
-#define UNTIMEOUT(r, f) untimeout((r), (f))
-
-#define BCOPY(s, d, l) memcpy(d, s, l)
-#define BZERO(s, n) memset(s, 0, n)
-#define BCMP(s1, s2, l) memcmp(s1, s2, l)
-
-#define PRINTMSG(m, l) { info("Remote message: %0.*v", l, m); }
-
-/*
- * MAKEHEADER - Add Header fields to a packet.
- */
-#define MAKEHEADER(p, t) { \
- PUTCHAR(PPP_ALLSTATIONS, p); \
- PUTCHAR(PPP_UI, p); \
- PUTSHORT(t, p); }
-
-/*
- * Exit status values.
- */
-#define EXIT_OK 0
-#define EXIT_FATAL_ERROR 1
-#define EXIT_OPTION_ERROR 2
-#define EXIT_NOT_ROOT 3
-#define EXIT_NO_KERNEL_SUPPORT 4
-#define EXIT_USER_REQUEST 5
-#define EXIT_LOCK_FAILED 6
-#define EXIT_OPEN_FAILED 7
-#define EXIT_CONNECT_FAILED 8
-#define EXIT_PTYCMD_FAILED 9
-#define EXIT_NEGOTIATION_FAILED 10
-#define EXIT_PEER_AUTH_FAILED 11
-#define EXIT_IDLE_TIMEOUT 12
-#define EXIT_CONNECT_TIME 13
-#define EXIT_CALLBACK 14
-#define EXIT_PEER_DEAD 15
-#define EXIT_HANGUP 16
-#define EXIT_LOOPBACK 17
-#define EXIT_INIT_FAILED 18
-#define EXIT_AUTH_TOPEER_FAILED 19
-#ifdef MAXOCTETS
-#define EXIT_TRAFFIC_LIMIT 20
-#endif
-#define EXIT_CNID_AUTH_FAILED 21
-
-/*
- * Debug macros. Slightly useful for finding bugs in pppd, not particularly
- * useful for finding out why your connection isn't being established.
- */
-#ifdef DEBUGALL
-#define DEBUGMAIN 1
-#define DEBUGFSM 1
-#define DEBUGLCP 1
-#define DEBUGIPCP 1
-#define DEBUGIPV6CP 1
-#define DEBUGUPAP 1
-#define DEBUGCHAP 1
-#endif
-
-#ifndef LOG_PPP /* we use LOG_LOCAL2 for syslog by default */
-#if defined(DEBUGMAIN) || defined(DEBUGFSM) || defined(DEBUGSYS) \
- || defined(DEBUGLCP) || defined(DEBUGIPCP) || defined(DEBUGUPAP) \
- || defined(DEBUGCHAP) || defined(DEBUG) || defined(DEBUGIPV6CP)
-#define LOG_PPP LOG_LOCAL2
-#else
-#define LOG_PPP LOG_DAEMON
-#endif
-#endif /* LOG_PPP */
-
-#ifdef DEBUGMAIN
-#define MAINDEBUG(x) if (debug) dbglog x
-#else
-#define MAINDEBUG(x)
-#endif
-
-#ifdef DEBUGSYS
-#define SYSDEBUG(x) if (debug) dbglog x
-#else
-#define SYSDEBUG(x)
-#endif
-
-#ifdef DEBUGFSM
-#define FSMDEBUG(x) if (debug) dbglog x
-#else
-#define FSMDEBUG(x)
-#endif
-
-#ifdef DEBUGLCP
-#define LCPDEBUG(x) if (debug) dbglog x
-#else
-#define LCPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPCP
-#define IPCPDEBUG(x) if (debug) dbglog x
-#else
-#define IPCPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPV6CP
-#define IPV6CPDEBUG(x) if (debug) dbglog x
-#else
-#define IPV6CPDEBUG(x)
-#endif
-
-#ifdef DEBUGUPAP
-#define UPAPDEBUG(x) if (debug) dbglog x
-#else
-#define UPAPDEBUG(x)
-#endif
-
-#ifdef DEBUGCHAP
-#define CHAPDEBUG(x) if (debug) dbglog x
-#else
-#define CHAPDEBUG(x)
-#endif
-
-#ifdef DEBUGIPXCP
-#define IPXCPDEBUG(x) if (debug) dbglog x
-#else
-#define IPXCPDEBUG(x)
-#endif
-
-#ifndef SIGTYPE
-#if defined(sun) || defined(SYSV) || defined(POSIX_SOURCE)
-#define SIGTYPE void
-#else
-#define SIGTYPE int
-#endif /* defined(sun) || defined(SYSV) || defined(POSIX_SOURCE) */
-#endif /* SIGTYPE */
-
-#ifndef MIN
-#define MIN(a, b) ((a) < (b)? (a): (b))
-#endif
-#ifndef MAX
-#define MAX(a, b) ((a) > (b)? (a): (b))
-#endif
-
-#ifndef offsetof
-#define offsetof(type, member) ((size_t) &((type *)0)->member)
-#endif
-
-#endif /* __PPP_H__ */
diff --git a/pppd_plugin/src/pppd/sha1.h b/pppd_plugin/src/pppd/sha1.h
deleted file mode 100644
index 83f64df..0000000
--- a/pppd_plugin/src/pppd/sha1.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* sha1.h */
-
-/* If OpenSSL is in use, then use that version of SHA-1 */
-#ifdef OPENSSL
-#include <t_sha.h>
-#define __SHA1_INCLUDE_
-#endif
-
-#ifndef __SHA1_INCLUDE_
-
-#ifndef SHA1_SIGNATURE_SIZE
-#ifdef SHA_DIGESTSIZE
-#define SHA1_SIGNATURE_SIZE SHA_DIGESTSIZE
-#else
-#define SHA1_SIGNATURE_SIZE 20
-#endif
-#endif
-
-typedef struct {
- u_int32_t state[5];
- u_int32_t count[2];
- unsigned char buffer[64];
-} SHA1_CTX;
-
-extern void SHA1_Init(SHA1_CTX *);
-extern void SHA1_Update(SHA1_CTX *, const unsigned char *, unsigned int);
-extern void SHA1_Final(unsigned char[SHA1_SIGNATURE_SIZE], SHA1_CTX *);
-
-#define __SHA1_INCLUDE_
-#endif /* __SHA1_INCLUDE_ */
-
diff --git a/pppd_plugin/src/pppd/spinlock.h b/pppd_plugin/src/pppd/spinlock.h
deleted file mode 100644
index 967fe37..0000000
--- a/pppd_plugin/src/pppd/spinlock.h
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef __SPINLOCK_H__
-#define __SPINLOCK_H__
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "tdb.h"
-
-#ifdef USE_SPINLOCKS
-
-#define RWLOCK_BIAS 0x1000UL
-
-/* OS SPECIFIC */
-#define MAX_BUSY_LOOPS 1000
-#undef USE_SCHED_YIELD
-
-/* ARCH SPECIFIC */
-/* We should make sure these are padded to a cache line */
-#if defined(SPARC_SPINLOCKS)
-typedef volatile char spinlock_t;
-#elif defined(POWERPC_SPINLOCKS)
-typedef volatile unsigned long spinlock_t;
-#elif defined(INTEL_SPINLOCKS)
-typedef volatile int spinlock_t;
-#elif defined(MIPS_SPINLOCKS)
-typedef volatile unsigned long spinlock_t;
-#else
-#error Need to implement spinlock code in spinlock.h
-#endif
-
-typedef struct {
- spinlock_t lock;
- volatile int count;
-} tdb_rwlock_t;
-
-int tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type);
-int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type);
-int tdb_create_rwlocks(int fd, unsigned int hash_size);
-int tdb_clear_spinlocks(TDB_CONTEXT *tdb);
-
-#define TDB_SPINLOCK_SIZE(hash_size) (((hash_size) + 1) * sizeof(tdb_rwlock_t))
-
-#else /* !USE_SPINLOCKS */
-#if 0
-#define tdb_create_rwlocks(fd, hash_size) 0
-#define tdb_spinlock(tdb, list, rw_type) (-1)
-#define tdb_spinunlock(tdb, list, rw_type) (-1)
-#else
-int tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type);
-int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type);
-int tdb_create_rwlocks(int fd, unsigned int hash_size);
-#endif
-int tdb_clear_spinlocks(TDB_CONTEXT *tdb);
-#define TDB_SPINLOCK_SIZE(hash_size) 0
-
-#endif
-
-#endif
diff --git a/pppd_plugin/src/pppd/tdb.h b/pppd_plugin/src/pppd/tdb.h
deleted file mode 100644
index 153b6e9..0000000
--- a/pppd_plugin/src/pppd/tdb.h
+++ /dev/null
@@ -1,164 +0,0 @@
-#ifndef __TDB_H__
-#define __TDB_H__
-
-/*
- Unix SMB/CIFS implementation.
-
- trivial database library
-
- Copyright (C) Andrew Tridgell 1999-2004
-
- ** NOTE! The following LGPL license applies to the tdb
- ** library. This does NOT imply that all of Samba is released
- ** under the LGPL
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef PRINTF_ATTRIBUTE
-/** Use gcc attribute to check printf fns. a1 is the 1-based index of
- * the parameter containing the format, and a2 the index of the first
- * argument. Note that some gcc 2.x versions don't handle this
- * properly **/
-#if (__GNUC__ >= 3)
-#define PRINTF_ATTRIBUTE(a1, a2) __attribute__ ((format (__printf__, a1, a2)))
-#else
-#define PRINTF_ATTRIBUTE(a1, a2)
-#endif
-#endif
-
-/* flags to tdb_store() */
-#define TDB_REPLACE 1
-#define TDB_INSERT 2
-#define TDB_MODIFY 3
-
-/* flags for tdb_open() */
-#define TDB_DEFAULT 0 /* just a readability place holder */
-#define TDB_CLEAR_IF_FIRST 1
-#define TDB_INTERNAL 2 /* don't store on disk */
-#define TDB_NOLOCK 4 /* don't do any locking */
-#define TDB_NOMMAP 8 /* don't use mmap */
-#define TDB_CONVERT 16 /* convert endian (internal use) */
-#define TDB_BIGENDIAN 32 /* header is big-endian (internal use) */
-
-#define TDB_ERRCODE(code, ret) ((tdb->ecode = (code)), ret)
-
-/* error codes */
-enum TDB_ERROR {TDB_SUCCESS=0, TDB_ERR_CORRUPT, TDB_ERR_IO, TDB_ERR_LOCK,
- TDB_ERR_OOM, TDB_ERR_EXISTS, TDB_ERR_NOLOCK, TDB_ERR_LOCK_TIMEOUT,
- TDB_ERR_NOEXIST};
-
-#ifndef u32
-#define u32 unsigned
-#endif
-
-typedef struct {
- char *dptr;
- size_t dsize;
-} TDB_DATA;
-
-typedef u32 tdb_len;
-typedef u32 tdb_off;
-
-/* this is stored at the front of every database */
-struct tdb_header {
- char magic_food[32]; /* for /etc/magic */
- u32 version; /* version of the code */
- u32 hash_size; /* number of hash entries */
- tdb_off rwlocks;
- tdb_off reserved[31];
-};
-
-struct tdb_lock_type {
- u32 count;
- u32 ltype;
-};
-
-struct tdb_traverse_lock {
- struct tdb_traverse_lock *next;
- u32 off;
- u32 hash;
-};
-
-/* this is the context structure that is returned from a db open */
-typedef struct tdb_context {
- char *name; /* the name of the database */
- void *map_ptr; /* where it is currently mapped */
- int fd; /* open file descriptor for the database */
- tdb_len map_size; /* how much space has been mapped */
- int read_only; /* opened read-only */
- struct tdb_lock_type *locked; /* array of chain locks */
- enum TDB_ERROR ecode; /* error code for last tdb error */
- struct tdb_header header; /* a cached copy of the header */
- u32 flags; /* the flags passed to tdb_open */
- struct tdb_traverse_lock travlocks; /* current traversal locks */
- struct tdb_context *next; /* all tdbs to avoid multiple opens */
- dev_t device; /* uniquely identifies this tdb */
- ino_t inode; /* uniquely identifies this tdb */
- void (*log_fn)(struct tdb_context *tdb, int level, const char *, ...) PRINTF_ATTRIBUTE(3,4); /* logging function */
- u32 (*hash_fn)(TDB_DATA *key);
- int open_flags; /* flags used in the open - needed by reopen */
-} TDB_CONTEXT;
-
-typedef int (*tdb_traverse_func)(TDB_CONTEXT *, TDB_DATA, TDB_DATA, void *);
-typedef void (*tdb_log_func)(TDB_CONTEXT *, int , const char *, ...);
-typedef u32 (*tdb_hash_func)(TDB_DATA *key);
-
-TDB_CONTEXT *tdb_open(const char *name, int hash_size, int tdb_flags,
- int open_flags, mode_t mode);
-TDB_CONTEXT *tdb_open_ex(const char *name, int hash_size, int tdb_flags,
- int open_flags, mode_t mode,
- tdb_log_func log_fn,
- tdb_hash_func hash_fn);
-
-int tdb_reopen(TDB_CONTEXT *tdb);
-int tdb_reopen_all(void);
-void tdb_logging_function(TDB_CONTEXT *tdb, tdb_log_func);
-enum TDB_ERROR tdb_error(TDB_CONTEXT *tdb);
-const char *tdb_errorstr(TDB_CONTEXT *tdb);
-TDB_DATA tdb_fetch(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_delete(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_store(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA dbuf, int flag);
-int tdb_append(TDB_CONTEXT *tdb, TDB_DATA key, TDB_DATA new_dbuf);
-int tdb_close(TDB_CONTEXT *tdb);
-TDB_DATA tdb_firstkey(TDB_CONTEXT *tdb);
-TDB_DATA tdb_nextkey(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_traverse(TDB_CONTEXT *tdb, tdb_traverse_func fn, void *);
-int tdb_exists(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_lockkeys(TDB_CONTEXT *tdb, u32 number, TDB_DATA keys[]);
-void tdb_unlockkeys(TDB_CONTEXT *tdb);
-int tdb_lockall(TDB_CONTEXT *tdb);
-void tdb_unlockall(TDB_CONTEXT *tdb);
-
-/* Low level locking functions: use with care */
-void tdb_set_lock_alarm(sig_atomic_t *palarm);
-int tdb_chainlock(TDB_CONTEXT *tdb, TDB_DATA key);
-int tdb_chainunlock(TDB_CONTEXT *tdb, TDB_DATA key);
-
-/* Debug functions. Not used in production. */
-void tdb_dump_all(TDB_CONTEXT *tdb);
-int tdb_printfreelist(TDB_CONTEXT *tdb);
-
-extern TDB_DATA tdb_null;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* tdb.h */
diff --git a/pppd_plugin/src/pppd/upap.h b/pppd_plugin/src/pppd/upap.h
deleted file mode 100644
index 5cb59e9..0000000
--- a/pppd_plugin/src/pppd/upap.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * upap.h - User/Password Authentication Protocol definitions.
- *
- * Copyright (c) 1984-2000 Carnegie Mellon University. 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. The name "Carnegie Mellon University" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For permission or any legal
- * details, please contact
- * Office of Technology Transfer
- * Carnegie Mellon University
- * 5000 Forbes Avenue
- * Pittsburgh, PA 15213-3890
- * (412) 268-4387, fax: (412) 268-7395
- * tech-transfer@andrew.cmu.edu
- *
- * 4. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by Computing Services
- * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
- *
- * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
- * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * $Id: upap.h,v 1.8 2002/12/04 23:03:33 paulus Exp $
- */
-
-/*
- * Packet header = Code, id, length.
- */
-#define UPAP_HEADERLEN 4
-
-
-/*
- * UPAP codes.
- */
-#define UPAP_AUTHREQ 1 /* Authenticate-Request */
-#define UPAP_AUTHACK 2 /* Authenticate-Ack */
-#define UPAP_AUTHNAK 3 /* Authenticate-Nak */
-
-
-/*
- * Each interface is described by upap structure.
- */
-typedef struct upap_state {
- int us_unit; /* Interface unit number */
- char *us_user; /* User */
- int us_userlen; /* User length */
- char *us_passwd; /* Password */
- int us_passwdlen; /* Password length */
- int us_clientstate; /* Client state */
- int us_serverstate; /* Server state */
- u_char us_id; /* Current id */
- int us_timeouttime; /* Timeout (seconds) for auth-req retrans. */
- int us_transmits; /* Number of auth-reqs sent */
- int us_maxtransmits; /* Maximum number of auth-reqs to send */
- int us_reqtimeout; /* Time to wait for auth-req from peer */
-} upap_state;
-
-
-/*
- * Client states.
- */
-#define UPAPCS_INITIAL 0 /* Connection down */
-#define UPAPCS_CLOSED 1 /* Connection up, haven't requested auth */
-#define UPAPCS_PENDING 2 /* Connection down, have requested auth */
-#define UPAPCS_AUTHREQ 3 /* We've sent an Authenticate-Request */
-#define UPAPCS_OPEN 4 /* We've received an Ack */
-#define UPAPCS_BADAUTH 5 /* We've received a Nak */
-
-/*
- * Server states.
- */
-#define UPAPSS_INITIAL 0 /* Connection down */
-#define UPAPSS_CLOSED 1 /* Connection up, haven't requested auth */
-#define UPAPSS_PENDING 2 /* Connection down, have requested auth */
-#define UPAPSS_LISTEN 3 /* Listening for an Authenticate */
-#define UPAPSS_OPEN 4 /* We've sent an Ack */
-#define UPAPSS_BADAUTH 5 /* We've sent a Nak */
-
-
-/*
- * Timeouts.
- */
-#define UPAP_DEFTIMEOUT 3 /* Timeout (seconds) for retransmitting req */
-#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
-
-extern upap_state upap[];
-
-void upap_authwithpeer __P((int, char *, char *));
-void upap_authpeer __P((int));
-
-extern struct protent pap_protent;
diff --git a/pppd_plugin/src/pptp.c b/pppd_plugin/src/pptp.c
deleted file mode 100644
index 1522d19..0000000
--- a/pppd_plugin/src/pptp.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2006 by Kozlov D. *
- * xeb@mail.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/un.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <unistd.h>
-#include <signal.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/wait.h>
-#include <sys/ioctl.h>
-
-#include "pppd/pppd.h"
-#include "pppd/fsm.h"
-#include "pppd/lcp.h"
-#include "pppd/ipcp.h"
-#include "pppd/ccp.h"
-#include "pppd/pathnames.h"
-
-#include "pptp_callmgr.h"
-#include <net/if.h>
-#include <net/ethernet.h>
-#include "if_pppox.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-
-extern char** environ;
-
-char pppd_version[] = PPPD_VERSION;
-extern int new_style_driver;
-
-
-char *pptp_server = NULL;
-char *pptp_client = NULL;
-char *pptp_phone = NULL;
-int pptp_sock=-1;
-int pptp_timeout=100000;
-struct in_addr localbind = { INADDR_NONE };
-
-static int callmgr_sock;
-static int pptp_fd;
-int call_ID;
-
-//static struct in_addr get_ip_address(char *name);
-static int open_callmgr(int call_id,struct in_addr inetaddr, char *phonenr,int window);
-static void launch_callmgr(int call_is,struct in_addr inetaddr, char *phonenr,int window);
-static int get_call_id(int sock, pid_t gre, pid_t pppd, u_int16_t *peer_call_id);
-
-//static int pptp_devname_hook(char *cmd, char **argv, int doit);
-static option_t Options[] =
-{
- { "pptp_server", o_string, &pptp_server,
- "PPTP Server" },
- { "pptp_client", o_string, &pptp_client,
- "PPTP Client" },
- { "pptp_sock",o_int, &pptp_sock,
- "PPTP socket" },
- { "pptp_phone", o_string, &pptp_phone,
- "PPTP Phone number" },
- { NULL }
-};
-
-static int pptp_connect(void);
-//static void pptp_send_config(int mtu,u_int32_t asyncmap,int pcomp,int accomp);
-//static void pptp_recv_config(int mru,u_int32_t asyncmap,int pcomp,int accomp);
-static void pptp_disconnect(void);
-
-struct channel pptp_channel = {
- options: Options,
- //process_extra_options: &PPPOEDeviceOptions,
- check_options: NULL,
- connect: &pptp_connect,
- disconnect: &pptp_disconnect,
- establish_ppp: &generic_establish_ppp,
- disestablish_ppp: &generic_disestablish_ppp,
- //send_config: &pptp_send_config,
- //recv_config: &pptp_recv_config,
- close: NULL,
- cleanup: NULL
-};
-
-static int pptp_start_server(void)
-{
- pptp_fd=pptp_sock;
- sprintf(ppp_devnam,"pptp (%s)",pptp_client);
-
- return pptp_fd;
-}
-static int pptp_start_client(void)
-{
- socklen_t len;
- struct sockaddr_pppox src_addr,dst_addr;
- struct hostent *hostinfo;
-
- hostinfo=gethostbyname(pptp_server);
- if (!hostinfo)
- {
- error("PPTP: Unknown host %s\n", pptp_server);
- return -1;
- }
- dst_addr.sa_addr.pptp.sin_addr=*(struct in_addr*)hostinfo->h_addr;
- {
- int sock;
- struct sockaddr_in addr;
- len=sizeof(addr);
- addr.sin_addr=dst_addr.sa_addr.pptp.sin_addr;
- addr.sin_family=AF_INET;
- addr.sin_port=htons(1700);
- sock=socket(AF_INET,SOCK_DGRAM,0);
- if (connect(sock,(struct sockaddr*)&addr,sizeof(addr)))
- {
- close(sock);
- error("PPTP: connect failed (%s)\n",strerror(errno));
- return -1;
- }
- getsockname(sock,(struct sockaddr*)&addr,&len);
- src_addr.sa_addr.pptp.sin_addr=addr.sin_addr;
- close(sock);
- }
- //info("PPTP: connect server=%s\n",inet_ntoa(conn.sin_addr));
- //conn.loc_addr.s_addr=INADDR_NONE;
- //conn.timeout=1;
- //conn.window=pptp_window;
-
- src_addr.sa_family=AF_PPPOX;
- src_addr.sa_protocol=PX_PROTO_PPTP;
- src_addr.sa_addr.pptp.call_id=0;
-
- dst_addr.sa_family=AF_PPPOX;
- dst_addr.sa_protocol=PX_PROTO_PPTP;
- dst_addr.sa_addr.pptp.call_id=0;
-
- pptp_fd=socket(AF_PPPOX,SOCK_STREAM,PX_PROTO_PPTP);
- if (pptp_fd<0)
- {
- error("PPTP: failed to create PPTP socket (%s)\n",strerror(errno));
- return -1;
- }
- if (bind(pptp_fd,(struct sockaddr*)&src_addr,sizeof(src_addr)))
- {
- close(pptp_fd);
- error("PPTP: failed to bind PPTP socket (%s)\n",strerror(errno));
- return -1;
- }
- len=sizeof(src_addr);
- getsockname(pptp_fd,(struct sockaddr*)&src_addr,&len);
- call_ID=src_addr.sa_addr.pptp.call_id;
-
- do {
- /*
- * Open connection to call manager (Launch call manager if necessary.)
- */
- callmgr_sock = open_callmgr(src_addr.sa_addr.pptp.call_id,dst_addr.sa_addr.pptp.sin_addr, pptp_phone,50);
- if (callmgr_sock<0)
- {
- close(pptp_fd);
- return -1;
- }
- /* Exchange PIDs, get call ID */
- } while (get_call_id(callmgr_sock, getpid(), getpid(), &dst_addr.sa_addr.pptp.call_id) < 0);
-
- if (connect(pptp_fd,(struct sockaddr*)&dst_addr,sizeof(dst_addr)))
- {
- close(callmgr_sock);
- close(pptp_fd);
- error("PPTP: failed to connect PPTP socket (%s)\n",strerror(errno));
- return -1;
- }
-
- sprintf(ppp_devnam,"pptp (%s)",pptp_server);
-
- return pptp_fd;
-}
-static int pptp_connect(void)
-{
- if ((!pptp_server && !pptp_client) || (pptp_server && pptp_client))
- {
- fatal("PPTP: unknown mode (you must specify pptp_server or pptp_client option)");
- return -1;
- }
-
- if (pptp_server) return pptp_start_client();
- return pptp_start_server();
-}
-
-static void pptp_disconnect(void)
-{
- if (pptp_server) close(callmgr_sock);
- close(pptp_fd);
-}
-
-static int open_callmgr(int call_id,struct in_addr inetaddr, char *phonenr,int window)
-{
- /* Try to open unix domain socket to call manager. */
- struct sockaddr_un where;
- const int NUM_TRIES = 3;
- int i, fd;
- pid_t pid;
- int status;
- /* Open socket */
- if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
- {
- fatal("Could not create unix domain socket: %s", strerror(errno));
- }
- /* Make address */
- callmgr_name_unixsock(&where, inetaddr, localbind);
- for (i = 0; i < NUM_TRIES; i++)
- {
- if (connect(fd, (struct sockaddr *) &where, sizeof(where)) < 0)
- {
- /* couldn't connect. We'll have to launch this guy. */
-
- unlink (where.sun_path);
-
- /* fork and launch call manager process */
- switch (pid = fork())
- {
- case -1: /* failure */
- fatal("fork() to launch call manager failed.");
- case 0: /* child */
- {
- close (fd);
- close(pptp_fd);
- /* close the pty and gre in the call manager */
- // close(pty_fd);
- //close(gre_fd);
- launch_callmgr(call_id,inetaddr, phonenr,window);
- }
- default: /* parent */
- waitpid(pid, &status, 0);
- if (status!= 0)
- {
- close(fd);
- error("Call manager exited with error %d", status);
- return -1;
- }
- break;
- }
- sleep(1);
- }
- else return fd;
- }
- close(fd);
- error("Could not launch call manager after %d tries.", i);
- return -1; /* make gcc happy */
-}
-
-/*** call the call manager main ***********************************************/
-static void launch_callmgr(int call_id,struct in_addr inetaddr, char *phonenr,int window)
-{
- char win[10];
- char call[10];
- char *my_argv[9] = { "pptp", inet_ntoa(inetaddr), "--call_id",call,"--phone",phonenr,"--window",win,NULL };
- char buf[128];
- sprintf(win,"%u",window);
- sprintf(call,"%u",call_id);
- snprintf(buf, sizeof(buf), "pptp: call manager for %s", my_argv[1]);
- //inststr(argc, argv, envp, buf);
- exit(callmgr_main(8, my_argv, environ));
-}
-
-/*** exchange data with the call manager *************************************/
-/* XXX need better error checking XXX */
-static int get_call_id(int sock, pid_t gre, pid_t pppd,
- u_int16_t *peer_call_id)
-{
- u_int16_t m_call_id, m_peer_call_id;
- /* write pid's to socket */
- /* don't bother with network byte order, because pid's are meaningless
- * outside the local host.
- */
- int rc;
- rc = write(sock, &gre, sizeof(gre));
- if (rc != sizeof(gre))
- return -1;
- rc = write(sock, &pppd, sizeof(pppd));
- if (rc != sizeof(pppd))
- return -1;
- rc = read(sock, &m_call_id, sizeof(m_call_id));
- if (rc != sizeof(m_call_id))
- return -1;
- rc = read(sock, &m_peer_call_id, sizeof(m_peer_call_id));
- if (rc != sizeof(m_peer_call_id))
- return -1;
- /*
- * XXX FIXME ... DO ERROR CHECKING & TIME-OUTS XXX
- * (Rhialto: I am assuming for now that timeouts are not relevant
- * here, because the read and write calls would return -1 (fail) when
- * the peer goes away during the process. We know it is (or was)
- * running because the connect() call succeeded.)
- * (James: on the other hand, if the route to the peer goes away, we
- * wouldn't get told by read() or write() for quite some time.)
- */
- *peer_call_id = m_peer_call_id;
- return 0;
-}
-
-void plugin_init(void)
-{
- /*if (!ppp_available() && !new_style_driver)
- {
- fatal("Linux kernel does not support PPP -- are you running 2.4.x?");
- }*/
-
- add_options(Options);
-
- info("PPTP plugin version %s compiled for pppd-%s, linux-%s",
- VERSION, PPPD_VERSION,KERNELVERSION);
-
- the_channel = &pptp_channel;
- modem = 0;
-}
-
diff --git a/pppd_plugin/src/pptp_callmgr.c b/pppd_plugin/src/pptp_callmgr.c
deleted file mode 100644
index 20bb736..0000000
--- a/pppd_plugin/src/pptp_callmgr.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/* pptp_callmgr.c ... Call manager for PPTP connections.
- * Handles TCP port 1723 protocol.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: pptp_callmgr.c,v 1.20 2005/03/31 07:42:39 quozl Exp $
- */
-#include <signal.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <sys/un.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <setjmp.h>
-#include <stdio.h>
-#include <errno.h>
-#include "pptp_callmgr.h"
-#include "pptp_ctrl.h"
-#include "pptp_msg.h"
-#include "dirutil.h"
-#include "vector.h"
-#include "util.h"
-
-extern struct in_addr localbind; /* from pptp.c */
-extern int call_ID;
-
-int open_inetsock(struct in_addr inetaddr);
-int open_unixsock(struct in_addr inetaddr);
-void close_inetsock(int fd, struct in_addr inetaddr);
-void close_unixsock(int fd, struct in_addr inetaddr);
-
-sigjmp_buf callmgr_env;
-
-void callmgr_sighandler(int sig) {
- /* TODO: according to signal(2), siglongjmp() is unsafe used here */
- siglongjmp (callmgr_env, 1);
-}
-
-void callmgr_do_nothing(int sig) {
- /* do nothing signal handler */
-}
-
-struct local_callinfo {
- int unix_sock;
- pid_t pid[2];
-};
-
-struct local_conninfo {
- VECTOR * call_list;
- fd_set * call_set;
-};
-
-/* Call callback */
-void call_callback(PPTP_CONN *conn, PPTP_CALL *call, enum call_state state)
-{
- struct local_callinfo *lci;
- struct local_conninfo *conninfo;
- u_int16_t call_id[2];
- switch(state) {
- case CALL_OPEN_DONE:
- /* okey dokey. This means that the call_id and peer_call_id are
- * now valid, so lets send them on to our friends who requested
- * this call. */
- lci = pptp_call_closure_get(conn, call); assert(lci != NULL);
- pptp_call_get_ids(conn, call, &call_id[0], &call_id[1]);
- write(lci->unix_sock, &call_id, sizeof(call_id));
- /* Our duty to the fatherland is now complete. */
- break;
- case CALL_OPEN_FAIL:
- case CALL_CLOSE_RQST:
- case CALL_CLOSE_DONE:
- /* don't need to do anything here, except make sure tables
- * are sync'ed */
- log("Closing connection (call state)");
- conninfo = pptp_conn_closure_get(conn);
- lci = pptp_call_closure_get(conn, call);
- assert(lci != NULL && conninfo != NULL);
- if (vector_contains(conninfo->call_list, lci->unix_sock)) {
- vector_remove(conninfo->call_list, lci->unix_sock);
- close(lci->unix_sock);
- FD_CLR(lci->unix_sock, conninfo->call_set);
- //if(lci->pid[0] > 1) kill(lci->pid[0], SIGTERM);
- //if(lci->pid[1] > 1) kill(lci->pid[1], SIGTERM);
- }
- break;
- default:
- log("Unhandled call callback state [%d].", (int) state);
- break;
- }
-}
-
-/******************************************************************************
- * NOTE ABOUT 'VOLATILE':
- * several variables here get a volatile qualifier to silence warnings
- * from older (before 3.0) gccs. if the longjmp stuff is removed,
- * the volatile qualifiers should be removed as well.
- *****************************************************************************/
-
-/*** Call Manager *************************************************************/
-int callmgr_main(int argc, char **argv, char **envp)
-{
- struct in_addr inetaddr;
- int inet_sock, unix_sock;
- fd_set call_set;
- PPTP_CONN * conn;
- VECTOR * call_list;
- int max_fd = 0;
- volatile int first = 1;
- int retval;
- int i;
- char * volatile phonenr=NULL;
- int volatile window=10;
- //int volatile call_id=0;
- /* Step 0: Check arguments */
- if (argc < 2)
- fatal("Usage: %s ip.add.ress.here [--phone <phone number>]", argv[0]);
- //phonenr = argc == 3 ? argv[2] : NULL;
- for(i=2; i<argc; i++)
- {
- //log("%s",argv[i]);
- if (strcmp(argv[i],"--phone")==0 && i+1<argc) phonenr=argv[++i];
- else if (strcmp(argv[i],"--window")==0 && i+1<argc) window=atoi(argv[++i]);
- else if (strcmp(argv[i],"--call_id")==0 && i+1<argc) call_ID=atoi(argv[++i]);
- }
- if (inet_aton(argv[1], &inetaddr) == 0)
- fatal("Invalid IP address: %s", argv[1]);
- log("IP: %s\n",inet_ntoa(inetaddr));
- /* Step 1: Open sockets. */
- if ((inet_sock = open_inetsock(inetaddr)) < 0)
- fatal("Could not open control connection to %s", argv[1]);
- log("control connection");
- if ((unix_sock = open_unixsock(inetaddr)) < 0)
- fatal("Could not open unix socket for %s", argv[1]);
- /* Step 1b: FORK and return status to calling process. */
- log("unix_sock");
-
- switch (fork()) {
- case 0: /* child. stick around. */
- break;
- case -1: /* failure. Fatal. */
- fatal("Could not fork.");
- default: /* Parent. Return status to caller. */
- exit(0);
- }
- /* re-open stderr as /dev/null to release it */
- file2fd("/dev/null", "wb", STDERR_FILENO);
- /* Step 1c: Clean up unix socket on TERM */
- if (sigsetjmp(callmgr_env, 1) != 0)
- goto cleanup;
- signal(SIGINT, callmgr_sighandler);
- signal(SIGTERM, callmgr_sighandler);
- signal(SIGPIPE, callmgr_do_nothing);
- signal(SIGUSR1, callmgr_do_nothing); /* signal state change
- wake up accept */
- /* Step 2: Open control connection and register callback */
- if ((conn = pptp_conn_open(inet_sock, 1, NULL/* callback */)) == NULL) {
- close(unix_sock); close(inet_sock); fatal("Could not open connection.");
- }
- FD_ZERO(&call_set);
- call_list = vector_create();
- {
- struct local_conninfo *conninfo = malloc(sizeof(*conninfo));
- if (conninfo == NULL) {
- close(unix_sock); close(inet_sock); fatal("No memory.");
- }
- conninfo->call_list = call_list;
- conninfo->call_set = &call_set;
- pptp_conn_closure_put(conn, conninfo);
- }
- if (sigsetjmp(callmgr_env, 1) != 0) goto shutdown;
- /* Step 3: Get FD_SETs */
- max_fd = unix_sock;
- do {
- int rc;
- fd_set read_set = call_set, write_set;
- FD_ZERO (&write_set);
- if (pptp_conn_established(conn)) {
- FD_SET (unix_sock, &read_set);
- if (unix_sock > max_fd) max_fd = unix_sock;
- }
- pptp_fd_set(conn, &read_set, &write_set, &max_fd);
- for (; max_fd > 0 ; max_fd--) {
- if (FD_ISSET (max_fd, &read_set) ||
- FD_ISSET (max_fd, &write_set))
- break;
- }
- /* Step 4: Wait on INET or UNIX event */
- if ((rc = select(max_fd + 1, &read_set, &write_set, NULL, NULL)) <0) {
- if (errno == EBADF) break;
- /* a signal or somesuch. */
- continue;
- }
- /* Step 5a: Handle INET events */
- rc = pptp_dispatch(conn, &read_set, &write_set);
- if (rc < 0)
- break;
- /* Step 5b: Handle new connection to UNIX socket */
- if (FD_ISSET(unix_sock, &read_set)) {
- /* New call! */
- struct sockaddr_un from;
- int len = sizeof(from);
- PPTP_CALL * call;
- struct local_callinfo *lci;
- int s;
- /* Accept the socket */
- FD_CLR (unix_sock, &read_set);
- if ((s = accept(unix_sock, (struct sockaddr *) &from, &len)) < 0) {
- warn("Socket not accepted: %s", strerror(errno));
- goto skip_accept;
- }
- /* Allocate memory for local call information structure. */
- if ((lci = malloc(sizeof(*lci))) == NULL) {
- warn("Out of memory."); close(s); goto skip_accept;
- }
- lci->unix_sock = s;
- /* Give the initiator time to write the PIDs while we open
- * the call */
- call = pptp_call_open(conn, call_ID,call_callback, phonenr,window);
- /* Read and store the associated pids */
- read(s, &lci->pid[0], sizeof(lci->pid[0]));
- read(s, &lci->pid[1], sizeof(lci->pid[1]));
- /* associate the local information with the call */
- pptp_call_closure_put(conn, call, (void *) lci);
- /* The rest is done on callback. */
- /* Keep alive; wait for close */
- retval = vector_insert(call_list, s, call); assert(retval);
- if (s > max_fd) max_fd = s;
- FD_SET(s, &call_set);
- first = 0;
- }
-skip_accept: /* Step 5c: Handle socket close */
- for (i = 0; i < max_fd + 1; i++)
- if (FD_ISSET(i, &read_set)) {
- /* close it */
- PPTP_CALL * call;
- retval = vector_search(call_list, i, &call);
- if (retval) {
- struct local_callinfo *lci =
- pptp_call_closure_get(conn, call);
- log("Closing connection (unhandled)");
- //if(lci->pid[0] > 1) kill(lci->pid[0], SIGTERM);
- //if(lci->pid[1] > 1) kill(lci->pid[1], SIGTERM);
- free(lci);
- /* soft shutdown. Callback will do hard shutdown later */
- pptp_call_close(conn, call);
- vector_remove(call_list, i);
- }
- FD_CLR(i, &call_set);
- close(i);
- }
- } while (vector_size(call_list) > 0 || first);
-shutdown:
- {
- int rc;
- fd_set read_set, write_set;
- struct timeval tv;
- signal(SIGINT, callmgr_do_nothing);
- signal(SIGTERM, callmgr_do_nothing);
- /* warn("Shutdown"); */
- /* kill all open calls */
- for (i = 0; i < vector_size(call_list); i++) {
- PPTP_CALL *call = vector_get_Nth(call_list, i);
- //struct local_callinfo *lci = pptp_call_closure_get(conn, call);
- log("Closing connection (shutdown)");
- pptp_call_close(conn, call);
- //if(lci->pid[0] > 1) kill(lci->pid[0], SIGTERM);
- //if(lci->pid[1] > 1) kill(lci->pid[1], SIGTERM);
- }
- /* attempt to dispatch these messages */
- FD_ZERO(&read_set);
- FD_ZERO(&write_set);
- pptp_fd_set(conn, &read_set, &write_set, &max_fd);
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- select(max_fd + 1, &read_set, &write_set, NULL, &tv);
- rc = pptp_dispatch(conn, &read_set, &write_set);
- if (rc > 0) {
- /* wait for a respond, a timeout because there might not be one */
- FD_ZERO(&read_set);
- FD_ZERO(&write_set);
- pptp_fd_set(conn, &read_set, &write_set, &max_fd);
- tv.tv_sec = 2;
- tv.tv_usec = 0;
- select(max_fd + 1, &read_set, &write_set, NULL, &tv);
- rc = pptp_dispatch(conn, &read_set, &write_set);
- if (rc > 0) {
- if (i > 0) sleep(2);
- /* no more open calls. Close the connection. */
- pptp_conn_close(conn, PPTP_STOP_LOCAL_SHUTDOWN);
- /* wait for a respond, a timeout because there might not be one */
- FD_ZERO(&read_set);
- FD_ZERO(&write_set);
- pptp_fd_set(conn, &read_set, &write_set, &max_fd);
- tv.tv_sec = 2;
- tv.tv_usec = 0;
- select(max_fd + 1, &read_set, &write_set, NULL, &tv);
- pptp_dispatch(conn, &read_set, &write_set);
- if (rc > 0) sleep(2);
- }
- }
- /* with extreme prejudice */
- pptp_conn_destroy(conn);
- vector_destroy(call_list);
- }
-cleanup:
- signal(SIGINT, callmgr_do_nothing);
- signal(SIGTERM, callmgr_do_nothing);
- close_inetsock(inet_sock, inetaddr);
- close_unixsock(unix_sock, inetaddr);
- return 0;
-}
-
-/*** open_inetsock ************************************************************/
-int open_inetsock(struct in_addr inetaddr)
-{
- struct sockaddr_in dest, src;
- int s;
- dest.sin_family = AF_INET;
- dest.sin_port = htons(PPTP_PORT);
- dest.sin_addr = inetaddr;
- if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- warn("socket: %s", strerror(errno));
- return s;
- }
- if (localbind.s_addr != INADDR_NONE) {
- bzero(&src, sizeof(src));
- src.sin_family = AF_INET;
- src.sin_addr = localbind;
- if (bind(s, (struct sockaddr *) &src, sizeof(src)) != 0) {
- warn("bind: %s", strerror(errno));
- close(s); return -1;
- }
- }
- if (connect(s, (struct sockaddr *) &dest, sizeof(dest)) < 0) {
- warn("connect: %s", strerror(errno));
- close(s); return -1;
- }
- return s;
-}
-
-/*** open_unixsock ************************************************************/
-int open_unixsock(struct in_addr inetaddr)
-{
- struct sockaddr_un where;
- struct stat st;
- char *dir;
- int s;
- if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
- warn("socket: %s", strerror(errno));
- return s;
- }
- callmgr_name_unixsock( &where, inetaddr, localbind);
- if (stat(where.sun_path, &st) >= 0)
- {
- warn("Call manager for %s is already running.", inet_ntoa(inetaddr));
- close(s); return -1;
- }
- /* Make sure path is valid. */
- dir = dirnamex(where.sun_path);
- if (!make_valid_path(dir, 0770))
- fatal("Could not make path to %s: %s", where.sun_path, strerror(errno));
- free(dir);
- if (bind(s, (struct sockaddr *) &where, sizeof(where)) < 0) {
- warn("bind: %s", strerror(errno));
- close(s); return -1;
- }
- chmod(where.sun_path, 0777);
- listen(s, 127);
- return s;
-}
-
-/*** close_inetsock ***********************************************************/
-void close_inetsock(int fd, struct in_addr inetaddr)
-{
- close(fd);
-}
-
-/*** close_unixsock ***********************************************************/
-void close_unixsock(int fd, struct in_addr inetaddr)
-{
- struct sockaddr_un where;
- close(fd);
- callmgr_name_unixsock(&where, inetaddr, localbind);
- unlink(where.sun_path);
-}
-
-/*** make a unix socket address ***********************************************/
-void callmgr_name_unixsock(struct sockaddr_un *where,
- struct in_addr inetaddr,
- struct in_addr localbind)
-{
- char localaddr[16], remoteaddr[16];
- where->sun_family = AF_UNIX;
- strncpy(localaddr, inet_ntoa(localbind), 16);
- strncpy(remoteaddr, inet_ntoa(inetaddr), 16);
- snprintf(where->sun_path, sizeof(where->sun_path),
- PPTP_SOCKET_PREFIX "%s:%i", remoteaddr,call_ID);
-}
diff --git a/pppd_plugin/src/pptp_callmgr.h b/pppd_plugin/src/pptp_callmgr.h
deleted file mode 100644
index d7bc2d6..0000000
--- a/pppd_plugin/src/pptp_callmgr.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* pptp_callmgr.h ... Call manager for PPTP connections.
- * Handles TCP port 1723 protocol.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: pptp_callmgr.h,v 1.3 2003/02/17 00:22:17 quozl Exp $
- */
-
-#define PPTP_SOCKET_PREFIX "/var/run/pptp/"
-
-int callmgr_main(int argc, char**argv, char**envp);
-void callmgr_name_unixsock(struct sockaddr_un *where,
- struct in_addr inetaddr,
- struct in_addr localbind);
diff --git a/pppd_plugin/src/pptp_ctrl.c b/pppd_plugin/src/pptp_ctrl.c
deleted file mode 100644
index 1bab3f9..0000000
--- a/pppd_plugin/src/pptp_ctrl.c
+++ /dev/null
@@ -1,1077 +0,0 @@
-/* pptp_ctrl.c ... handle PPTP control connection.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: pptp_ctrl.c,v 1.31 2005/03/31 07:42:39 quozl Exp $
- */
-
-#include <errno.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <signal.h>
-#include <string.h>
-#include <ctype.h>
-#include <fcntl.h>
-#include "pptp_msg.h"
-#include "pptp_ctrl.h"
-#include "pptp_options.h"
-#include "vector.h"
-#include "util.h"
-#include "pptp_quirks.h"
-
-/* BECAUSE OF SIGNAL LIMITATIONS, EACH PROCESS CAN ONLY MANAGE ONE
- * CONNECTION. SO THIS 'PPTP_CONN' STRUCTURE IS A BIT MISLEADING.
- * WE'LL KEEP CONNECTION-SPECIFIC INFORMATION IN THERE ANYWAY (AS
- * OPPOSED TO USING GLOBAL VARIABLES), BUT BEWARE THAT THE ENTIRE
- * UNIX SIGNAL-HANDLING SEMANTICS WOULD HAVE TO CHANGE (OR THE
- * TIME-OUT CODE DRASTICALLY REWRITTEN) BEFORE YOU COULD DO A
- * PPTP_CONN_OPEN MORE THAN ONCE PER PROCESS AND GET AWAY WITH IT.
- */
-
-/* This structure contains connection-specific information that the
- * signal handler needs to see. Thus, it needs to be in a global
- * variable. If you end up using pthreads or something (why not
- * just processes?), this would have to be placed in a thread-specific
- * data area, using pthread_get|set_specific, etc., so I've
- * conveniently encapsulated it for you.
- * [linux threads will have to support thread-specific signals
- * before this would work at all, which, as of this writing
- * (linux-threads v0.6, linux kernel 2.1.72), it does not.]
- */
-
-/* Globals */
-
-/* control the number of times echo packets will be logged */
-static int nlogecho = 10;
-
-static struct thread_specific {
- struct sigaction old_sigaction; /* evil signals */
- PPTP_CONN * conn;
-} global;
-
-#define INITIAL_BUFSIZE 512 /* initial i/o buffer size. */
-
-struct PPTP_CONN {
- int inet_sock;
- /* Connection States */
- enum {
- CONN_IDLE, CONN_WAIT_CTL_REPLY, CONN_WAIT_STOP_REPLY, CONN_ESTABLISHED
- } conn_state; /* on startup: CONN_IDLE */
- /* Keep-alive states */
- enum {
- KA_NONE, KA_OUTSTANDING
- } ka_state; /* on startup: KA_NONE */
- /* Keep-alive ID; monotonically increasing (watch wrap-around!) */
- u_int32_t ka_id; /* on startup: 1 */
- /* Other properties. */
- u_int16_t version;
- u_int16_t firmware_rev;
- u_int8_t hostname[64], vendor[64];
- /* XXX these are only PNS properties, currently XXX */
- /* Call assignment information. */
- u_int16_t call_serial_number;
- VECTOR *call;
- void * closure;
- pptp_conn_cb callback;
- /******* IO buffers ******/
- char * read_buffer, *write_buffer;
- size_t read_alloc, write_alloc;
- size_t read_size, write_size;
-};
-
-struct PPTP_CALL {
- /* Call properties */
- enum {
- PPTP_CALL_PAC, PPTP_CALL_PNS
- } call_type;
- union {
- enum pptp_pac_state {
- PAC_IDLE, PAC_WAIT_REPLY, PAC_ESTABLISHED, PAC_WAIT_CS_ANS
- } pac;
- enum pptp_pns_state {
- PNS_IDLE, PNS_WAIT_REPLY, PNS_ESTABLISHED, PNS_WAIT_DISCONNECT
- } pns;
- } state;
- u_int16_t call_id, peer_call_id;
- u_int16_t sernum;
- u_int32_t speed;
- /* For user data: */
- pptp_call_cb callback;
- void * closure;
-};
-
-
-/* PPTP error codes: ----------------------------------------------*/
-
-/* (General Error Codes) */
-static const struct {
- const char *name, *desc;
-} pptp_general_errors[] = {
-#define PPTP_GENERAL_ERROR_NONE 0
- { "(None)", "No general error" },
-#define PPTP_GENERAL_ERROR_NOT_CONNECTED 1
- { "(Not-Connected)", "No control connection exists yet for this "
- "PAC-PNS pair" },
-#define PPTP_GENERAL_ERROR_BAD_FORMAT 2
- { "(Bad-Format)", "Length is wrong or Magic Cookie value is incorrect" },
-#define PPTP_GENERAL_ERROR_BAD_VALUE 3
- { "(Bad-Value)", "One of the field values was out of range or "
- "reserved field was non-zero" },
-#define PPTP_GENERAL_ERROR_NO_RESOURCE 4
- { "(No-Resource)", "Insufficient resources to handle this command now" },
-#define PPTP_GENERAL_ERROR_BAD_CALLID 5
- { "(Bad-Call ID)", "The Call ID is invalid in this context" },
-#define PPTP_GENERAL_ERROR_PAC_ERROR 6
- { "(PAC-Error)", "A generic vendor-specific error occured in the PAC" }
-};
-
-#define MAX_GENERAL_ERROR ( sizeof(pptp_general_errors) / \
- sizeof(pptp_general_errors[0]) - 1)
-
-/* Outgoing Call Reply Result Codes */
-static const char *pptp_out_call_reply_result[] = {
-/* 0 */ "Unknown Result Code",
-/* 1 */ "Connected",
-/* 2 */ "General Error",
-/* 3 */ "No Carrier Detected",
-/* 4 */ "Busy Signal",
-/* 5 */ "No Dial Tone",
-/* 6 */ "Time Out",
-/* 7 */ "Not Accepted, Call is administratively prohibited" };
-
-#define MAX_OUT_CALL_REPLY_RESULT 7
-
-/* Call Disconnect Notify Result Codes */
-static const char *pptp_call_disc_ntfy[] = {
-/* 0 */ "Unknown Result Code",
-/* 1 */ "Lost Carrier",
-/* 2 */ "General Error",
-/* 3 */ "Administrative Shutdown",
-/* 4 */ "(your) Request" };
-
-#define MAX_CALL_DISC_NTFY 4
-
-/* Call Disconnect Notify Result Codes */
-static const char *pptp_start_ctrl_conn_rply[] = {
-/* 0 */ "Unknown Result Code",
-/* 1 */ "Successful Channel Establishment",
-/* 2 */ "General Error",
-/* 3 */ "Command Channel Already Exists",
-/* 4 */ "Requester is not Authorized" };
-
-#define MAX_START_CTRL_CONN_REPLY 4
-
-/* timing options */
-int idle_wait = PPTP_TIMEOUT;
-int max_echo_wait = PPTP_TIMEOUT;
-
-/* Local prototypes */
-static void pptp_reset_timer(void);
-static void pptp_handle_timer();
-/* Write/read as much as we can without blocking. */
-int pptp_write_some(PPTP_CONN * conn);
-int pptp_read_some(PPTP_CONN * conn);
-/* Make valid packets from read_buffer */
-int pptp_make_packet(PPTP_CONN * conn, void **buf, size_t *size);
-/* Add packet to write_buffer */
-int pptp_send_ctrl_packet(PPTP_CONN * conn, void * buffer, size_t size);
-/* Dispatch packets (general) */
-int pptp_dispatch_packet(PPTP_CONN * conn, void * buffer, size_t size);
-/* Dispatch packets (control messages) */
-int ctrlp_disp(PPTP_CONN * conn, void * buffer, size_t size);
-/* Set link info, for pptp servers that need it.
- this is a noop, unless the user specified a quirk and
- there's a set_link hook defined in the quirks table
- for that quirk */
-void pptp_set_link(PPTP_CONN * conn, int peer_call_id);
-
-/*** log error information in control packets *********************************/
-static void ctrlp_error( int result, int error, int cause,
- const char *result_text[], int max_result)
-{
- if( cause >= 0)
- log("Result code is %d '%s'. Error code is %d, Cause code is %d",
- result, result_text[result <= max_result ? result : 0], error,
- cause );
- else
- log("Reply result code is %d '%s'. Error code is %d",
- result, result_text[result <= max_result ? result : 0], error);
- if ((error > 0) && (error <= MAX_GENERAL_ERROR)){
- if( result != PPTP_RESULT_GENERAL_ERROR )
- log("Result code is something else then \"general error\", "
- "so the following error is probably bogus.");
- log("Error is '%s', Error message: '%s'",
- pptp_general_errors[error].name,
- pptp_general_errors[error].desc);
- }
-}
-
-static const char *ctrl_msg_types[] = {
- "invalid control message type",
-/* (Control Connection Management) */
- "Start-Control-Connection-Request", /* 1 */
- "Start-Control-Connection-Reply", /* 2 */
- "Stop-Control-Connection-Request", /* 3 */
- "Stop-Control-Connection-Reply", /* 4 */
- "Echo-Request", /* 5 */
- "Echo-Reply", /* 6 */
-/* (Call Management) */
- "Outgoing-Call-Request", /* 7 */
- "Outgoing-Call-Reply", /* 8 */
- "Incoming-Call-Request", /* 9 */
- "Incoming-Call-Reply", /* 10 */
- "Incoming-Call-Connected", /* 11 */
- "Call-Clear-Request", /* 12 */
- "Call-Disconnect-Notify", /* 13 */
-/* (Error Reporting) */
- "WAN-Error-Notify", /* 14 */
-/* (PPP Session Control) */
- "Set-Link-Info" /* 15 */
-};
-#define MAX_CTRLMSG_TYPE 15
-
-/*** report a sent packet ****************************************************/
-static void ctrlp_rep( void * buffer, int size, int isbuff)
-{
- struct pptp_header *packet = buffer;
- unsigned int type;
- if(size < sizeof(struct pptp_header)) return;
- type = ntoh16(packet->ctrl_type);
- /* FIXME: do not report sending echo requests as long as they are
- * sent in a signal handler. This may dead lock as the syslog call
- * is not reentrant */
- if( type == PPTP_ECHO_RQST ) return;
- /* don't keep reporting sending of echo's */
- if( (type == PPTP_ECHO_RQST || type == PPTP_ECHO_RPLY) && nlogecho <= 0 ) return;
- log("%s control packet type is %d '%s'\n",isbuff ? "Buffered" : "Sent",
- type, ctrl_msg_types[type <= MAX_CTRLMSG_TYPE ? type : 0]);
-
-}
-
-
-
-/* Open new pptp_connection. Returns NULL on failure. */
-PPTP_CONN * pptp_conn_open(int inet_sock, int isclient, pptp_conn_cb callback)
-{
- PPTP_CONN *conn;
- /* Allocate structure */
- if ((conn = malloc(sizeof(*conn))) == NULL) return NULL;
- if ((conn->call = vector_create()) == NULL) { free(conn); return NULL; }
- /* Initialize */
- conn->inet_sock = inet_sock;
- conn->conn_state = CONN_IDLE;
- conn->ka_state = KA_NONE;
- conn->ka_id = 1;
- conn->call_serial_number = 0;
- conn->callback = callback;
- /* Create I/O buffers */
- conn->read_size = conn->write_size = 0;
- conn->read_alloc = conn->write_alloc = INITIAL_BUFSIZE;
- conn->read_buffer =
- malloc(sizeof(*(conn->read_buffer)) * conn->read_alloc);
- conn->write_buffer =
- malloc(sizeof(*(conn->write_buffer)) * conn->write_alloc);
- if (conn->read_buffer == NULL || conn->write_buffer == NULL) {
- if (conn->read_buffer != NULL) free(conn->read_buffer);
- if (conn->write_buffer != NULL) free(conn->write_buffer);
- vector_destroy(conn->call); free(conn); return NULL;
- }
- /* Make this socket non-blocking. */
- fcntl(conn->inet_sock, F_SETFL, O_NONBLOCK);
- /* Request connection from server, if this is a client */
- if (isclient) {
- struct pptp_start_ctrl_conn packet = {
- PPTP_HEADER_CTRL(PPTP_START_CTRL_CONN_RQST),
- hton16(PPTP_VERSION), 0, 0,
- hton32(PPTP_FRAME_CAP), hton32(PPTP_BEARER_CAP),
- hton16(PPTP_MAX_CHANNELS), hton16(PPTP_FIRMWARE_VERSION),
- PPTP_HOSTNAME, PPTP_VENDOR
- };
- /* fix this packet, if necessary */
- int idx, rc;
- idx = get_quirk_index();
- if (idx != -1 && pptp_fixups[idx].start_ctrl_conn) {
- if ((rc = pptp_fixups[idx].start_ctrl_conn(&packet)))
- warn("calling the start_ctrl_conn hook failed (%d)", rc);
- }
- if (pptp_send_ctrl_packet(conn, &packet, sizeof(packet)))
- conn->conn_state = CONN_WAIT_CTL_REPLY;
- else
- return NULL; /* could not send initial start request. */
- }
- /* Set up interval/keep-alive timer */
- /* First, register handler for SIGALRM */
- sigpipe_create();
- sigpipe_assign(SIGALRM);
- global.conn = conn;
- /* Reset event timer */
- pptp_reset_timer();
- /* all done. */
- return conn;
-}
-
-int pptp_conn_established(PPTP_CONN *conn) {
- return (conn->conn_state == CONN_ESTABLISHED);
-}
-
-/* This currently *only* works for client call requests.
- * We need to do something else to allocate calls for incoming requests.
- */
-PPTP_CALL * pptp_call_open(PPTP_CONN * conn, int call_id,pptp_call_cb callback,
- char *phonenr,int window)
-{
- PPTP_CALL * call;
- int idx, rc;
- /* Send off the call request */
- struct pptp_out_call_rqst packet = {
- PPTP_HEADER_CTRL(PPTP_OUT_CALL_RQST),
- 0,0, /*call_id, sernum */
- hton32(PPTP_BPS_MIN), hton32(PPTP_BPS_MAX),
- hton32(PPTP_BEARER_CAP), hton32(PPTP_FRAME_CAP),
- hton16(window), 0, 0, 0, {0}, {0}
- };
- assert(conn && conn->call);
- assert(conn->conn_state == CONN_ESTABLISHED);
- /* Assign call id */
- if (!call_id && !vector_scan(conn->call, 0, PPTP_MAX_CHANNELS - 1, &call_id))
- /* no more calls available! */
- return NULL;
- /* allocate structure. */
- if ((call = malloc(sizeof(*call))) == NULL) return NULL;
- /* Initialize call structure */
- call->call_type = PPTP_CALL_PNS;
- call->state.pns = PNS_IDLE;
- call->call_id = (u_int16_t) call_id;
- call->sernum = conn->call_serial_number++;
- call->callback = callback;
- call->closure = NULL;
- packet.call_id = htons(call->call_id);
- packet.call_sernum = htons(call->sernum);
- /* if we have a quirk, build a new packet to fit it */
- idx = get_quirk_index();
- if (idx != -1 && pptp_fixups[idx].out_call_rqst_hook) {
- if ((rc = pptp_fixups[idx].out_call_rqst_hook(&packet)))
- warn("calling the out_call_rqst hook failed (%d)", rc);
- }
- /* fill in the phone number if it was specified */
- if (phonenr) {
- strncpy(packet.phone_num, phonenr, sizeof(packet.phone_num));
- packet.phone_len = strlen(phonenr);
- if( packet.phone_len > sizeof(packet.phone_num))
- packet.phone_len = sizeof(packet.phone_num);
- packet.phone_len = hton16 (packet.phone_len);
- }
- if (pptp_send_ctrl_packet(conn, &packet, sizeof(packet))) {
- pptp_reset_timer();
- call->state.pns = PNS_WAIT_REPLY;
- /* and add it to the call vector */
- vector_insert(conn->call, call_id, call);
- return call;
- } else { /* oops, unsuccessful. Deallocate. */
- free(call);
- return NULL;
- }
-}
-
-/*** pptp_call_close **********************************************************/
-void pptp_call_close(PPTP_CONN * conn, PPTP_CALL * call)
-{
- struct pptp_call_clear_rqst rqst = {
- PPTP_HEADER_CTRL(PPTP_CALL_CLEAR_RQST), 0, 0
- };
- assert(conn && conn->call); assert(call);
- assert(vector_contains(conn->call, call->call_id));
- /* haven't thought about PAC yet */
- assert(call->call_type == PPTP_CALL_PNS);
- assert(call->state.pns != PNS_IDLE);
- rqst.call_id = hton16(call->call_id);
- /* don't check state against WAIT_DISCONNECT... allow multiple disconnect
- * requests to be made.
- */
- pptp_send_ctrl_packet(conn, &rqst, sizeof(rqst));
- pptp_reset_timer();
- call->state.pns = PNS_WAIT_DISCONNECT;
- /* call structure will be freed when we have confirmation of disconnect. */
-}
-
-/*** hard close ***************************************************************/
-void pptp_call_destroy(PPTP_CONN *conn, PPTP_CALL *call)
-{
- assert(conn && conn->call); assert(call);
- assert(vector_contains(conn->call, call->call_id));
- /* notify */
- if (call->callback != NULL) call->callback(conn, call, CALL_CLOSE_DONE);
- /* deallocate */
- vector_remove(conn->call, call->call_id);
- free(call);
-}
-
-/*** this is a soft close *****************************************************/
-void pptp_conn_close(PPTP_CONN * conn, u_int8_t close_reason)
-{
- struct pptp_stop_ctrl_conn rqst = {
- PPTP_HEADER_CTRL(PPTP_STOP_CTRL_CONN_RQST),
- hton8(close_reason), 0, 0
- };
- int i;
- assert(conn && conn->call);
- /* avoid repeated close attempts */
- if (conn->conn_state == CONN_IDLE || conn->conn_state == CONN_WAIT_STOP_REPLY)
- return;
- /* close open calls, if any */
- for (i = 0; i < vector_size(conn->call); i++)
- pptp_call_close(conn, vector_get_Nth(conn->call, i));
- /* now close connection */
- log("Closing PPTP connection");
- pptp_send_ctrl_packet(conn, &rqst, sizeof(rqst));
- pptp_reset_timer(); /* wait 60 seconds for reply */
- conn->conn_state = CONN_WAIT_STOP_REPLY;
- return;
-}
-
-/*** this is a hard close *****************************************************/
-void pptp_conn_destroy(PPTP_CONN * conn)
-{
- int i;
- assert(conn != NULL); assert(conn->call != NULL);
- /* destroy all open calls */
- for (i = 0; i < vector_size(conn->call); i++)
- pptp_call_destroy(conn, vector_get_Nth(conn->call, i));
- /* notify */
- if (conn->callback != NULL) conn->callback(conn, CONN_CLOSE_DONE);
- sigpipe_close();
- close(conn->inet_sock);
- /* deallocate */
- vector_destroy(conn->call);
- free(conn);
-}
-
-/*** Deal with messages, in a non-blocking manner
- * Add file descriptors used by pptp to fd_set.
- */
-void pptp_fd_set(PPTP_CONN * conn, fd_set * read_set, fd_set * write_set,
- int * max_fd)
-{
- assert(conn && conn->call);
- /* Add fd to write_set if there are outstanding writes. */
- if (conn->write_size > 0)
- FD_SET(conn->inet_sock, write_set);
- /* Always add fd to read_set. (always want something to read) */
- FD_SET(conn->inet_sock, read_set);
- if (*max_fd < conn->inet_sock) *max_fd = conn->inet_sock;
- /* Add signal pipe file descriptor to set */
- int sig_fd = sigpipe_fd();
- FD_SET(sig_fd, read_set);
- if (*max_fd < sig_fd) *max_fd = sig_fd;
-}
-
-/*** handle any pptp file descriptors set in fd_set, and clear them ***********/
-int pptp_dispatch(PPTP_CONN * conn, fd_set * read_set, fd_set * write_set)
-{
- int r = 0;
- assert(conn && conn->call);
- /* Check for signals */
- if (FD_ISSET(sigpipe_fd(), read_set)) {
- if (sigpipe_read() == SIGALRM) pptp_handle_timer();
- FD_CLR(sigpipe_fd(), read_set);
- }
- /* Check write_set could be set. */
- if (FD_ISSET(conn->inet_sock, write_set)) {
- FD_CLR(conn->inet_sock, write_set);
- if (conn->write_size > 0)
- r = pptp_write_some(conn);/* write as much as we can without blocking */
- }
- /* Check read_set */
- if (r >= 0 && FD_ISSET(conn->inet_sock, read_set)) {
- void *buffer; size_t size;
- FD_CLR(conn->inet_sock, read_set);
- r = pptp_read_some(conn); /* read as much as we can without blocking */
- if (r < 0)
- return r;
- /* make packets of the buffer, while we can. */
- while (r >= 0 && pptp_make_packet(conn, &buffer, &size)) {
- r = pptp_dispatch_packet(conn, buffer, size);
- free(buffer);
- }
- }
- /* That's all, folks. Simple, eh? */
- return r;
-}
-
-/*** Non-blocking write *******************************************************/
-int pptp_write_some(PPTP_CONN * conn) {
- ssize_t retval;
- assert(conn && conn->call);
- retval = write(conn->inet_sock, conn->write_buffer, conn->write_size);
- if (retval < 0) { /* error. */
- if (errno == EAGAIN || errno == EINTR) {
- return 0;
- } else { /* a real error */
- log("write error: %s", strerror(errno));
- return -1;
- }
- }
- assert(retval <= conn->write_size);
- conn->write_size -= retval;
- memmove(conn->write_buffer, conn->write_buffer + retval, conn->write_size);
- ctrlp_rep(conn->write_buffer, retval, 0);
- return 0;
-}
-
-/*** Non-blocking read ********************************************************/
-int pptp_read_some(PPTP_CONN * conn)
-{
- ssize_t retval;
- assert(conn && conn->call);
- if (conn->read_size == conn->read_alloc) { /* need to alloc more memory */
- char *new_buffer = realloc(conn->read_buffer,
- sizeof(*(conn->read_buffer)) * conn->read_alloc * 2);
- if (new_buffer == NULL) {
- log("Out of memory"); return -1;
- }
- conn->read_alloc *= 2;
- conn->read_buffer = new_buffer;
- }
- retval = read(conn->inet_sock, conn->read_buffer + conn->read_size,
- conn->read_alloc - conn->read_size);
- if (retval == 0) {
- log("read returned zero, peer has closed");
- return -1;
- }
- if (retval < 0) {
- if (errno == EINTR || errno == EAGAIN)
- return 0;
- else { /* a real error */
- log("read error: %s", strerror(errno));
- return -1;
- }
- }
- conn->read_size += retval;
- assert(conn->read_size <= conn->read_alloc);
- return 0;
-}
-
-/*** Packet formation *********************************************************/
-int pptp_make_packet(PPTP_CONN * conn, void **buf, size_t *size)
-{
- struct pptp_header *header;
- size_t bad_bytes = 0;
- assert(conn && conn->call); assert(buf != NULL); assert(size != NULL);
- /* Give up unless there are at least sizeof(pptp_header) bytes */
- while ((conn->read_size-bad_bytes) >= sizeof(struct pptp_header)) {
- /* Throw out bytes until we have a valid header. */
- header = (struct pptp_header *) (conn->read_buffer + bad_bytes);
- if (ntoh32(header->magic) != PPTP_MAGIC) goto throwitout;
- if (ntoh16(header->reserved0) != 0)
- log("reserved0 field is not zero! (0x%x) Cisco feature? \n",
- ntoh16(header->reserved0));
- if (ntoh16(header->length) < sizeof(struct pptp_header)) goto throwitout;
- if (ntoh16(header->length) > PPTP_CTRL_SIZE_MAX) goto throwitout;
- /* well. I guess it's good. Let's see if we've got it all. */
- if (ntoh16(header->length) > (conn->read_size-bad_bytes))
- /* nope. Let's wait until we've got it, then. */
- goto flushbadbytes;
- /* One last check: */
- if ((ntoh16(header->pptp_type) == PPTP_MESSAGE_CONTROL) &&
- (ntoh16(header->length) !=
- PPTP_CTRL_SIZE(ntoh16(header->ctrl_type))))
- goto throwitout;
- /* well, I guess we've got it. */
- *size = ntoh16(header->length);
- *buf = malloc(*size);
- if (*buf == NULL) { log("Out of memory."); return 0; /* ack! */ }
- memcpy(*buf, conn->read_buffer + bad_bytes, *size);
- /* Delete this packet from the read_buffer. */
- conn->read_size -= (bad_bytes + *size);
- memmove(conn->read_buffer, conn->read_buffer + bad_bytes + *size,
- conn->read_size);
- if (bad_bytes > 0)
- log("%lu bad bytes thrown away.", (unsigned long) bad_bytes);
- return 1;
-throwitout:
- bad_bytes++;
- }
-flushbadbytes:
- /* no more packets. Let's get rid of those bad bytes */
- conn->read_size -= bad_bytes;
- memmove(conn->read_buffer, conn->read_buffer + bad_bytes, conn->read_size);
- if (bad_bytes > 0)
- log("%lu bad bytes thrown away.", (unsigned long) bad_bytes);
- return 0;
-}
-
-/*** pptp_send_ctrl_packet ****************************************************/
-int pptp_send_ctrl_packet(PPTP_CONN * conn, void * buffer, size_t size)
-{
- assert(conn && conn->call); assert(buffer);
- if( conn->write_size > 0) pptp_write_some( conn);
- if( conn->write_size == 0) {
- ssize_t retval;
- retval = write(conn->inet_sock, buffer, size);
- if (retval < 0) { /* error. */
- if (errno == EAGAIN || errno == EINTR) {
- /* ignore */;
- retval = 0;
- } else { /* a real error */
- log("write error: %s", strerror(errno));
- pptp_conn_destroy(conn); /* shut down fast. */
- return 0;
- }
- }
- ctrlp_rep( buffer, retval, 0);
- size -= retval;
- if( size <= 0) return 1;
- }
- /* Shove anything not written into the write buffer */
- if (conn->write_size + size > conn->write_alloc) { /* need more memory */
- char *new_buffer = realloc(conn->write_buffer,
- sizeof(*(conn->write_buffer)) * conn->write_alloc * 2);
- if (new_buffer == NULL) {
- log("Out of memory"); return 0;
- }
- conn->write_alloc *= 2;
- conn->write_buffer = new_buffer;
- }
- memcpy(conn->write_buffer + conn->write_size, buffer, size);
- conn->write_size += size;
- ctrlp_rep( buffer,size,1);
- return 1;
-}
-
-/*** Packet Dispatch **********************************************************/
-int pptp_dispatch_packet(PPTP_CONN * conn, void * buffer, size_t size)
-{
- int r = 0;
- struct pptp_header *header = (struct pptp_header *)buffer;
- assert(conn && conn->call); assert(buffer);
- assert(ntoh32(header->magic) == PPTP_MAGIC);
- assert(ntoh16(header->length) == size);
- switch (ntoh16(header->pptp_type)) {
- case PPTP_MESSAGE_CONTROL:
- r = ctrlp_disp(conn, buffer, size);
- break;
- case PPTP_MESSAGE_MANAGE:
- /* MANAGEMENT messages aren't even part of the spec right now. */
- log("PPTP management message received, but not understood.");
- break;
- default:
- log("Unknown PPTP control message type received: %u",
- (unsigned int) ntoh16(header->pptp_type));
- break;
- }
- return r;
-}
-
-/*** log echo request/replies *************************************************/
-static void logecho( int type)
-{
- /* hack to stop flooding the log files (the most interesting part is right
- * after the connection built-up) */
- if( nlogecho > 0) {
- log( "Echo Re%s received.", type == PPTP_ECHO_RQST ? "quest" :"ply");
- if( --nlogecho == 0)
- log("no more Echo Reply/Request packets will be reported.");
- }
-}
-
-/*** pptp_dispatch_ctrl_packet ************************************************/
-int ctrlp_disp(PPTP_CONN * conn, void * buffer, size_t size)
-{
- struct pptp_header *header = (struct pptp_header *)buffer;
- u_int8_t close_reason = PPTP_STOP_NONE;
- assert(conn && conn->call); assert(buffer);
- assert(ntoh32(header->magic) == PPTP_MAGIC);
- assert(ntoh16(header->length) == size);
- assert(ntoh16(header->pptp_type) == PPTP_MESSAGE_CONTROL);
- if (size < PPTP_CTRL_SIZE(ntoh16(header->ctrl_type))) {
- log("Invalid packet received [type: %d; length: %d].",
- (int) ntoh16(header->ctrl_type), (int) size);
- return 0;
- }
- switch (ntoh16(header->ctrl_type)) {
- /* ----------- STANDARD Start-Session MESSAGES ------------ */
- case PPTP_START_CTRL_CONN_RQST:
- {
- struct pptp_start_ctrl_conn *packet =
- (struct pptp_start_ctrl_conn *) buffer;
- struct pptp_start_ctrl_conn reply = {
- PPTP_HEADER_CTRL(PPTP_START_CTRL_CONN_RPLY),
- hton16(PPTP_VERSION), 0, 0,
- hton32(PPTP_FRAME_CAP), hton32(PPTP_BEARER_CAP),
- hton16(PPTP_MAX_CHANNELS), hton16(PPTP_FIRMWARE_VERSION),
- PPTP_HOSTNAME, PPTP_VENDOR };
- int idx, rc;
- log("Received Start Control Connection Request");
- /* fix this packet, if necessary */
- idx = get_quirk_index();
- if (idx != -1 && pptp_fixups[idx].start_ctrl_conn) {
- if ((rc = pptp_fixups[idx].start_ctrl_conn(&reply)))
- warn("calling the start_ctrl_conn hook failed (%d)", rc);
- }
- if (conn->conn_state == CONN_IDLE) {
- if (ntoh16(packet->version) < PPTP_VERSION) {
- /* Can't support this (earlier) PPTP_VERSION */
- reply.version = packet->version;
- /* protocol version not supported */
- reply.result_code = hton8(5);
- pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
- pptp_reset_timer(); /* give sender a chance for a retry */
- } else { /* same or greater version */
- if (pptp_send_ctrl_packet(conn, &reply, sizeof(reply))) {
- conn->conn_state = CONN_ESTABLISHED;
- log("server connection ESTABLISHED.");
- pptp_reset_timer();
- }
- }
- }
- break;
- }
- case PPTP_START_CTRL_CONN_RPLY:
- {
- struct pptp_start_ctrl_conn *packet =
- (struct pptp_start_ctrl_conn *) buffer;
- log("Received Start Control Connection Reply");
- if (conn->conn_state == CONN_WAIT_CTL_REPLY) {
- /* XXX handle collision XXX [see rfc] */
- if (ntoh16(packet->version) != PPTP_VERSION) {
- if (conn->callback != NULL)
- conn->callback(conn, CONN_OPEN_FAIL);
- close_reason = PPTP_STOP_PROTOCOL;
- goto pptp_conn_close;
- }
- if (ntoh8(packet->result_code) != 1 &&
- /* J'ai change le if () afin que la connection ne se ferme
- * pas pour un "rien" :p adel@cybercable.fr -
- *
- * Don't close the connection if the result code is zero
- * (feature found in certain ADSL modems)
- */
- ntoh8(packet->result_code) != 0) {
- log("Negative reply received to our Start Control "
- "Connection Request");
- ctrlp_error(packet->result_code, packet->error_code,
- -1, pptp_start_ctrl_conn_rply,
- MAX_START_CTRL_CONN_REPLY);
- if (conn->callback != NULL)
- conn->callback(conn, CONN_OPEN_FAIL);
- close_reason = PPTP_STOP_PROTOCOL;
- goto pptp_conn_close;
- }
- conn->conn_state = CONN_ESTABLISHED;
- /* log session properties */
- conn->version = ntoh16(packet->version);
- conn->firmware_rev = ntoh16(packet->firmware_rev);
- memcpy(conn->hostname, packet->hostname, sizeof(conn->hostname));
- memcpy(conn->vendor, packet->vendor, sizeof(conn->vendor));
- pptp_reset_timer(); /* 60 seconds until keep-alive */
- log("Client connection established.");
- if (conn->callback != NULL)
- conn->callback(conn, CONN_OPEN_DONE);
- } /* else goto pptp_conn_close; */
- break;
- }
- /* ----------- STANDARD Stop-Session MESSAGES ------------ */
- case PPTP_STOP_CTRL_CONN_RQST:
- {
- /* conn_state should be CONN_ESTABLISHED, but it could be
- * something else */
- struct pptp_stop_ctrl_conn reply = {
- PPTP_HEADER_CTRL(PPTP_STOP_CTRL_CONN_RPLY),
- hton8(1), hton8(PPTP_GENERAL_ERROR_NONE), 0
- };
- log("Received Stop Control Connection Request.");
- if (conn->conn_state == CONN_IDLE) break;
- if (pptp_send_ctrl_packet(conn, &reply, sizeof(reply))) {
- if (conn->callback != NULL)
- conn->callback(conn, CONN_CLOSE_RQST);
- conn->conn_state = CONN_IDLE;
- return -1;
- }
- break;
- }
- case PPTP_STOP_CTRL_CONN_RPLY:
- {
- log("Received Stop Control Connection Reply.");
- /* conn_state should be CONN_WAIT_STOP_REPLY, but it
- * could be something else */
- if (conn->conn_state == CONN_IDLE) break;
- conn->conn_state = CONN_IDLE;
- return -1;
- }
- /* ----------- STANDARD Echo/Keepalive MESSAGES ------------ */
- case PPTP_ECHO_RPLY:
- {
- struct pptp_echo_rply *packet =
- (struct pptp_echo_rply *) buffer;
- logecho( PPTP_ECHO_RPLY);
- if ((conn->ka_state == KA_OUTSTANDING) &&
- (ntoh32(packet->identifier) == conn->ka_id)) {
- conn->ka_id++;
- conn->ka_state = KA_NONE;
- pptp_reset_timer();
- }
- break;
- }
- case PPTP_ECHO_RQST:
- {
- struct pptp_echo_rqst *packet =
- (struct pptp_echo_rqst *) buffer;
- struct pptp_echo_rply reply = {
- PPTP_HEADER_CTRL(PPTP_ECHO_RPLY),
- packet->identifier, /* skip hton32(ntoh32(id)) */
- hton8(1), hton8(PPTP_GENERAL_ERROR_NONE), 0
- };
- logecho( PPTP_ECHO_RQST);
- pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
- pptp_reset_timer();
- break;
- }
- /* ----------- OUTGOING CALL MESSAGES ------------ */
- case PPTP_OUT_CALL_RQST:
- {
- struct pptp_out_call_rqst *packet =
- (struct pptp_out_call_rqst *)buffer;
- struct pptp_out_call_rply reply = {
- PPTP_HEADER_CTRL(PPTP_OUT_CALL_RPLY),
- 0 /* callid */, packet->call_id, 1, PPTP_GENERAL_ERROR_NONE, 0,
- hton32(PPTP_CONNECT_SPEED),
- hton16(PPTP_WINDOW), hton16(PPTP_DELAY), 0
- };
- log("Received Outgoing Call Request.");
- /* XXX PAC: eventually this should make an outgoing call. XXX */
- reply.result_code = hton8(7); /* outgoing calls verboten */
- pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
- break;
- }
- case PPTP_OUT_CALL_RPLY:
- {
- struct pptp_out_call_rply *packet =
- (struct pptp_out_call_rply *)buffer;
- PPTP_CALL * call;
- u_int16_t callid = ntoh16(packet->call_id_peer);
- log("Received Outgoing Call Reply.");
- if (!vector_search(conn->call, (int) callid, &call)) {
- log("PPTP_OUT_CALL_RPLY received for non-existant call: "
- "peer call ID (us) %d call ID (them) %d.",
- callid, ntoh16(packet->call_id));
- break;
- }
- if (call->call_type != PPTP_CALL_PNS) {
- log("Ack! How did this call_type get here?"); /* XXX? */
- break;
- }
- if (call->state.pns != PNS_WAIT_REPLY) {
- warn("Unexpected(?) Outgoing Call Reply will be ignored.");
- break;
- }
- /* check for errors */
- if (packet->result_code != 1) {
- /* An error. Log it verbosely. */
- log("Our outgoing call request [callid %d] has not been "
- "accepted.", (int) callid);
- ctrlp_error(packet->result_code, packet->error_code,
- packet->cause_code, pptp_out_call_reply_result,
- MAX_OUT_CALL_REPLY_RESULT);
- call->state.pns = PNS_IDLE;
- if (call->callback != NULL)
- call->callback(conn, call, CALL_OPEN_FAIL);
- pptp_call_destroy(conn, call);
- } else {
- /* connection established */
- call->state.pns = PNS_ESTABLISHED;
- call->peer_call_id = ntoh16(packet->call_id);
- call->speed = ntoh32(packet->speed);
- pptp_reset_timer();
- /* call pptp_set_link. unless the user specified a quirk
- and this quirk has a set_link hook, this is a noop */
- pptp_set_link(conn, call->peer_call_id);
- if (call->callback != NULL)
- call->callback(conn, call, CALL_OPEN_DONE);
- log("Outgoing call established (call ID %u, peer's "
- "call ID %u).\n", call->call_id, call->peer_call_id);
- }
- break;
- }
- /* ----------- INCOMING CALL MESSAGES ------------ */
- /* XXX write me XXX */
- /* ----------- CALL CONTROL MESSAGES ------------ */
- case PPTP_CALL_CLEAR_RQST:
- {
- struct pptp_call_clear_rqst *packet =
- (struct pptp_call_clear_rqst *)buffer;
- struct pptp_call_clear_ntfy reply = {
- PPTP_HEADER_CTRL(PPTP_CALL_CLEAR_NTFY), packet->call_id,
- 1, PPTP_GENERAL_ERROR_NONE, 0, 0, {0}
- };
- log("Received Call Clear Request.");
- if (vector_contains(conn->call, ntoh16(packet->call_id))) {
- PPTP_CALL * call;
- vector_search(conn->call, ntoh16(packet->call_id), &call);
- if (call->callback != NULL)
- call->callback(conn, call, CALL_CLOSE_RQST);
- pptp_send_ctrl_packet(conn, &reply, sizeof(reply));
- pptp_call_destroy(conn, call);
- log("Call closed (RQST) (call id %d)", (int) call->call_id);
- }
- break;
- }
- case PPTP_CALL_CLEAR_NTFY:
- {
- struct pptp_call_clear_ntfy *packet =
- (struct pptp_call_clear_ntfy *)buffer;
- log("Call disconnect notification received (call id %d)",
- ntoh16(packet->call_id));
- if (vector_contains(conn->call, ntoh16(packet->call_id))) {
- PPTP_CALL * call;
- ctrlp_error(packet->result_code, packet->error_code,
- packet->cause_code, pptp_call_disc_ntfy,
- MAX_CALL_DISC_NTFY);
- vector_search(conn->call, ntoh16(packet->call_id), &call);
- pptp_call_destroy(conn, call);
- }
- /* XXX we could log call stats here XXX */
- /* XXX not all servers send this XXX */
- break;
- }
- case PPTP_SET_LINK_INFO:
- {
- /* I HAVE NO CLUE WHAT TO DO IF send_accm IS NOT 0! */
- /* this is really dealt with in the HDLC deencapsulation, anyway. */
- struct pptp_set_link_info *packet =
- (struct pptp_set_link_info *)buffer;
- /* log it. */
- log("PPTP_SET_LINK_INFO received from peer_callid %u",
- (unsigned int) ntoh16(packet->call_id_peer));
- log(" send_accm is %08lX, recv_accm is %08lX",
- (unsigned long) ntoh32(packet->send_accm),
- (unsigned long) ntoh32(packet->recv_accm));
- if (!(ntoh32(packet->send_accm) == 0 &&
- ntoh32(packet->recv_accm) == 0))
- warn("Non-zero Async Control Character Maps are not supported!");
- break;
- }
- default:
- log("Unrecognized Packet %d received.",
- (int) ntoh16(((struct pptp_header *)buffer)->ctrl_type));
- /* goto pptp_conn_close; */
- break;
- }
- return 0;
-pptp_conn_close:
- warn("pptp_conn_close(%d)", (int) close_reason);
- pptp_conn_close(conn, close_reason);
- return 0;
-}
-
-/*** pptp_set_link **************************************************************/
-void pptp_set_link(PPTP_CONN* conn, int peer_call_id)
-{
- int idx, rc;
- /* if we need to send a set_link packet because of buggy
- hardware or pptp server, do it now */
- if ((idx = get_quirk_index()) != -1 && pptp_fixups[idx].set_link_hook) {
- struct pptp_set_link_info packet;
- if ((rc = pptp_fixups[idx].set_link_hook(&packet, peer_call_id)))
- warn("calling the set_link hook failed (%d)", rc);
- if (pptp_send_ctrl_packet(conn, &packet, sizeof(packet))) {
- pptp_reset_timer();
- }
- }
-}
-
-/*** Get info from call structure *********************************************/
-/* NOTE: The peer_call_id is undefined until we get a server response. */
-void pptp_call_get_ids(PPTP_CONN * conn, PPTP_CALL * call,
- u_int16_t * call_id, u_int16_t * peer_call_id)
-{
- assert(conn != NULL); assert(call != NULL);
- *call_id = call->call_id;
- *peer_call_id = call->peer_call_id;
-}
-
-/*** pptp_call_closure_put ****************************************************/
-void pptp_call_closure_put(PPTP_CONN * conn, PPTP_CALL * call, void *cl)
-{
- assert(conn != NULL); assert(call != NULL);
- call->closure = cl;
-}
-
-/*** pptp_call_closure_get ****************************************************/
-void * pptp_call_closure_get(PPTP_CONN * conn, PPTP_CALL * call)
-{
- assert(conn != NULL); assert(call != NULL);
- return call->closure;
-}
-
-/*** pptp_conn_closure_put ****************************************************/
-void pptp_conn_closure_put(PPTP_CONN * conn, void *cl)
-{
- assert(conn != NULL);
- conn->closure = cl;
-}
-
-/*** pptp_conn_closure_get ****************************************************/
-void * pptp_conn_closure_get(PPTP_CONN * conn)
-{
- assert(conn != NULL);
- return conn->closure;
-}
-
-/*** Reset keep-alive timer ***************************************************/
-static void pptp_reset_timer(void)
-{
- const struct itimerval tv = { { 0, 0 }, /* stop on time-out */
- { idle_wait, 0 } };
- if (idle_wait) setitimer(ITIMER_REAL, &tv, NULL);
-}
-
-
-/*** Handle keep-alive timer **************************************************/
-static void pptp_handle_timer()
-{
- int i;
- /* "Keep Alives and Timers, 1": check connection state */
- if (global.conn->conn_state != CONN_ESTABLISHED) {
- if (global.conn->conn_state == CONN_WAIT_STOP_REPLY)
- /* hard close. */
- pptp_conn_destroy(global.conn);
- else /* soft close */
- pptp_conn_close(global.conn, PPTP_STOP_NONE);
- }
- /* "Keep Alives and Timers, 2": check echo status */
- if (global.conn->ka_state == KA_OUTSTANDING) {
- /* no response to keep-alive */
- log ("closing control connection due to missing echo reply");
- pptp_conn_close(global.conn, PPTP_STOP_NONE);
- } else { /* ka_state == NONE */ /* send keep-alive */
- struct pptp_echo_rqst rqst = {
- PPTP_HEADER_CTRL(PPTP_ECHO_RQST), hton32(global.conn->ka_id) };
- pptp_send_ctrl_packet(global.conn, &rqst, sizeof(rqst));
- global.conn->ka_state = KA_OUTSTANDING;
- }
- /* check incoming/outgoing call states for !IDLE && !ESTABLISHED */
- for (i = 0; i < vector_size(global.conn->call); i++) {
- PPTP_CALL * call = vector_get_Nth(global.conn->call, i);
- if (call->call_type == PPTP_CALL_PNS) {
- if (call->state.pns == PNS_WAIT_REPLY) {
- /* send close request */
- pptp_call_close(global.conn, call);
- assert(call->state.pns == PNS_WAIT_DISCONNECT);
- } else if (call->state.pns == PNS_WAIT_DISCONNECT) {
- /* hard-close the call */
- pptp_call_destroy(global.conn, call);
- }
- } else if (call->call_type == PPTP_CALL_PAC) {
- if (call->state.pac == PAC_WAIT_REPLY) {
- /* XXX FIXME -- drop the PAC connection XXX */
- } else if (call->state.pac == PAC_WAIT_CS_ANS) {
- /* XXX FIXME -- drop the PAC connection XXX */
- }
- }
- }
- pptp_reset_timer();
-}
diff --git a/pppd_plugin/src/pptp_ctrl.h b/pppd_plugin/src/pptp_ctrl.h
deleted file mode 100644
index a7bb506..0000000
--- a/pppd_plugin/src/pptp_ctrl.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* pptp_ctrl.h ... handle PPTP control connection.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: pptp_ctrl.h,v 1.5 2004/11/09 01:42:32 quozl Exp $
- */
-
-#ifndef INC_PPTP_CTRL_H
-#define INC_PPTP_CTRL_H
-#include <sys/types.h>
-
-typedef struct PPTP_CONN PPTP_CONN;
-typedef struct PPTP_CALL PPTP_CALL;
-
-enum call_state { CALL_OPEN_RQST, CALL_OPEN_DONE, CALL_OPEN_FAIL,
- CALL_CLOSE_RQST, CALL_CLOSE_DONE };
-enum conn_state { CONN_OPEN_RQST, CONN_OPEN_DONE, CONN_OPEN_FAIL,
- CONN_CLOSE_RQST, CONN_CLOSE_DONE };
-
-typedef void (*pptp_call_cb)(PPTP_CONN*, PPTP_CALL*, enum call_state);
-typedef void (*pptp_conn_cb)(PPTP_CONN*, enum conn_state);
-
-/* if 'isclient' is true, then will send 'conn open' packet to other host.
- * not necessary if this is being opened by a server process after
- * receiving a conn_open packet from client.
- */
-PPTP_CONN * pptp_conn_open(int inet_sock, int isclient,
- pptp_conn_cb callback);
-PPTP_CALL * pptp_call_open(PPTP_CONN * conn, int call_id,
- pptp_call_cb callback, char *phonenr,int window);
-int pptp_conn_established(PPTP_CONN * conn);
-/* soft close. Will callback on completion. */
-void pptp_call_close(PPTP_CONN * conn, PPTP_CALL * call);
-/* hard close. */
-void pptp_call_destroy(PPTP_CONN *conn, PPTP_CALL *call);
-/* soft close. Will callback on completion. */
-void pptp_conn_close(PPTP_CONN * conn, u_int8_t close_reason);
-/* hard close */
-void pptp_conn_destroy(PPTP_CONN * conn);
-
-/* Add file descriptors used by pptp to fd_set. */
-void pptp_fd_set(PPTP_CONN * conn, fd_set * read_set, fd_set * write_set, int *max_fd);
-/* handle any pptp file descriptors set in fd_set, and clear them */
-int pptp_dispatch(PPTP_CONN * conn, fd_set * read_set, fd_set * write_set);
-
-/* Get info about connection, call */
-void pptp_call_get_ids(PPTP_CONN * conn, PPTP_CALL * call,
- u_int16_t * call_id, u_int16_t * peer_call_id);
-/* Arbitrary user data about this call/connection.
- * It is the caller's responsibility to free this data before calling
- * pptp_call|conn_close()
- */
-void * pptp_conn_closure_get(PPTP_CONN * conn);
-void pptp_conn_closure_put(PPTP_CONN * conn, void *cl);
-void * pptp_call_closure_get(PPTP_CONN * conn, PPTP_CALL * call);
-void pptp_call_closure_put(PPTP_CONN * conn, PPTP_CALL * call, void *cl);
-
-#endif /* INC_PPTP_CTRL_H */
diff --git a/pppd_plugin/src/pptp_msg.h b/pppd_plugin/src/pptp_msg.h
deleted file mode 100644
index e50ce0c..0000000
--- a/pppd_plugin/src/pptp_msg.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/* pptp.h: packet structures and magic constants for the PPTP protocol
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: pptp_msg.h,v 1.3 2003/02/15 10:37:21 quozl Exp $
- */
-
-#ifndef INC_PPTP_H
-#define INC_PPTP_H
-
-/* Grab definitions of int16, int32, etc. */
-#include <sys/types.h>
-/* define "portable" htons, etc. */
-#define hton8(x) (x)
-#define ntoh8(x) (x)
-#define hton16(x) htons(x)
-#define ntoh16(x) ntohs(x)
-#define hton32(x) htonl(x)
-#define ntoh32(x) ntohl(x)
-
-/* PPTP magic numbers: ----------------------------------------- */
-
-#define PPTP_MAGIC 0x1A2B3C4D /* Magic cookie for PPTP datagrams */
-#define PPTP_PORT 1723 /* PPTP TCP port number */
-#define PPTP_PROTO 47 /* PPTP IP protocol number */
-
-/* Control Connection Message Types: --------------------------- */
-
-#define PPTP_MESSAGE_CONTROL 1
-#define PPTP_MESSAGE_MANAGE 2
-
-/* Control Message Types: -------------------------------------- */
-
-/* (Control Connection Management) */
-#define PPTP_START_CTRL_CONN_RQST 1
-#define PPTP_START_CTRL_CONN_RPLY 2
-#define PPTP_STOP_CTRL_CONN_RQST 3
-#define PPTP_STOP_CTRL_CONN_RPLY 4
-#define PPTP_ECHO_RQST 5
-#define PPTP_ECHO_RPLY 6
-
-/* (Call Management) */
-#define PPTP_OUT_CALL_RQST 7
-#define PPTP_OUT_CALL_RPLY 8
-#define PPTP_IN_CALL_RQST 9
-#define PPTP_IN_CALL_RPLY 10
-#define PPTP_IN_CALL_CONNECT 11
-#define PPTP_CALL_CLEAR_RQST 12
-#define PPTP_CALL_CLEAR_NTFY 13
-
-/* (Error Reporting) */
-#define PPTP_WAN_ERR_NTFY 14
-
-/* (PPP Session Control) */
-#define PPTP_SET_LINK_INFO 15
-
-/* PPTP version information: --------------------------------------*/
-#define PPTP_VERSION_STRING "1.00"
-#define PPTP_VERSION 0x100
-#define PPTP_FIRMWARE_STRING "0.01"
-#define PPTP_FIRMWARE_VERSION 0x001
-
-/* PPTP capabilities: ---------------------------------------------*/
-
-/* (Framing capabilities for msg sender) */
-#define PPTP_FRAME_ASYNC 1
-#define PPTP_FRAME_SYNC 2
-#define PPTP_FRAME_ANY 3
-
-/* (Bearer capabilities for msg sender) */
-#define PPTP_BEARER_ANALOG 1
-#define PPTP_BEARER_DIGITAL 2
-#define PPTP_BEARER_ANY 3
-
-#define PPTP_RESULT_GENERAL_ERROR 2
-
-/* (Reasons to close a connection) */
-#define PPTP_STOP_NONE 1 /* no good reason */
-#define PPTP_STOP_PROTOCOL 2 /* can't support peer's protocol version */
-#define PPTP_STOP_LOCAL_SHUTDOWN 3 /* requester is being shut down */
-
-/* PPTP datagram structures (all data in network byte order): ----------*/
-
-struct pptp_header {
- u_int16_t length; /* message length in octets, including header */
- u_int16_t pptp_type; /* PPTP message type. 1 for control message. */
- u_int32_t magic; /* this should be PPTP_MAGIC. */
- u_int16_t ctrl_type; /* Control message type (0-15) */
- u_int16_t reserved0; /* reserved. MUST BE ZERO. */
-};
-
-struct pptp_start_ctrl_conn { /* for control message types 1 and 2 */
- struct pptp_header header;
-
- u_int16_t version; /* PPTP protocol version. = PPTP_VERSION */
- u_int8_t result_code; /* these two fields should be zero on rqst msg*/
- u_int8_t error_code; /* 0 unless result_code==2 (General Error) */
- u_int32_t framing_cap; /* Framing capabilities */
- u_int32_t bearer_cap; /* Bearer Capabilities */
- u_int16_t max_channels; /* Maximum Channels (=0 for PNS, PAC ignores) */
- u_int16_t firmware_rev; /* Firmware or Software Revision */
- u_int8_t hostname[64]; /* Host Name (64 octets, zero terminated) */
- u_int8_t vendor[64]; /* Vendor string (64 octets, zero term.) */
- /* MS says that end of hostname/vendor fields should be filled with */
- /* octets of value 0, but Win95 PPTP driver doesn't do this. */
-};
-
-struct pptp_stop_ctrl_conn { /* for control message types 3 and 4 */
- struct pptp_header header;
-
- u_int8_t reason_result; /* reason for rqst, result for rply */
- u_int8_t error_code; /* MUST be 0, unless rply result==2 (general err)*/
- u_int16_t reserved1; /* MUST be 0 */
-};
-
-struct pptp_echo_rqst { /* for control message type 5 */
- struct pptp_header header;
- u_int32_t identifier; /* arbitrary value set by sender which is used */
- /* to match up reply and request */
-};
-
-struct pptp_echo_rply { /* for control message type 6 */
- struct pptp_header header;
- u_int32_t identifier; /* should correspond to id of rqst */
- u_int8_t result_code;
- u_int8_t error_code; /* =0, unless result_code==2 (general error) */
- u_int16_t reserved1; /* MUST BE ZERO */
-};
-
-struct pptp_out_call_rqst { /* for control message type 7 */
- struct pptp_header header;
- u_int16_t call_id; /* Call ID (unique id used to multiplex data) */
- u_int16_t call_sernum; /* Call Serial Number (used for logging) */
- u_int32_t bps_min; /* Minimum BPS (lowest acceptable line speed) */
- u_int32_t bps_max; /* Maximum BPS (highest acceptable line speed) */
- u_int32_t bearer; /* Bearer type */
- u_int32_t framing; /* Framing type */
- u_int16_t recv_size; /* Recv. Window Size (no. of buffered packets) */
- u_int16_t delay; /* Packet Processing Delay (in 1/10 sec) */
- u_int16_t phone_len; /* Phone Number Length (num. of valid digits) */
- u_int16_t reserved1; /* MUST BE ZERO */
- u_int8_t phone_num[64]; /* Phone Number (64 octets, null term.) */
- u_int8_t subaddress[64]; /* Subaddress (64 octets, null term.) */
-};
-
-struct pptp_out_call_rply { /* for control message type 8 */
- struct pptp_header header;
- u_int16_t call_id; /* Call ID (used to multiplex data over tunnel)*/
- u_int16_t call_id_peer; /* Peer's Call ID (call_id of pptp_out_call_rqst)*/
- u_int8_t result_code; /* Result Code (1 is no errors) */
- u_int8_t error_code; /* Error Code (=0 unless result_code==2) */
- u_int16_t cause_code; /* Cause Code (addt'l failure information) */
- u_int32_t speed; /* Connect Speed (in BPS) */
- u_int16_t recv_size; /* Recv. Window Size (no. of buffered packets) */
- u_int16_t delay; /* Packet Processing Delay (in 1/10 sec) */
- u_int32_t channel; /* Physical Channel ID (for logging) */
-};
-
-struct pptp_in_call_rqst { /* for control message type 9 */
- struct pptp_header header;
- u_int16_t call_id; /* Call ID (unique id used to multiplex data) */
- u_int16_t call_sernum; /* Call Serial Number (used for logging) */
- u_int32_t bearer; /* Bearer type */
- u_int32_t channel; /* Physical Channel ID (for logging) */
- u_int16_t dialed_len; /* Dialed Number Length (# of valid digits) */
- u_int16_t dialing_len; /* Dialing Number Length (# of valid digits) */
- u_int8_t dialed_num[64]; /* Dialed Number (64 octets, zero term.) */
- u_int8_t dialing_num[64]; /* Dialing Number (64 octets, zero term.) */
- u_int8_t subaddress[64]; /* Subaddress (64 octets, zero term.) */
-};
-
-struct pptp_in_call_rply { /* for control message type 10 */
- struct pptp_header header;
- u_int16_t call_id; /* Call ID (used to multiplex data over tunnel)*/
- u_int16_t call_id_peer; /* Peer's Call ID (call_id of pptp_out_call_rqst)*/
- u_int8_t result_code; /* Result Code (1 is no errors) */
- u_int8_t error_code; /* Error Code (=0 unless result_code==2) */
- u_int16_t recv_size; /* Recv. Window Size (no. of buffered packets) */
- u_int16_t delay; /* Packet Processing Delay (in 1/10 sec) */
- u_int16_t reserved1; /* MUST BE ZERO */
-};
-
-struct pptp_in_call_connect { /* for control message type 11 */
- struct pptp_header header;
- u_int16_t call_id_peer; /* Peer's Call ID (call_id of pptp_out_call_rqst)*/
- u_int16_t reserved1; /* MUST BE ZERO */
- u_int32_t speed; /* Connect Speed (in BPS) */
- u_int16_t recv_size; /* Recv. Window Size (no. of buffered packets) */
- u_int16_t delay; /* Packet Processing Delay (in 1/10 sec) */
- u_int32_t framing; /* Framing type */
-};
-
-struct pptp_call_clear_rqst { /* for control message type 12 */
- struct pptp_header header;
- u_int16_t call_id; /* Call ID (used to multiplex data over tunnel)*/
- u_int16_t reserved1; /* MUST BE ZERO */
-};
-
-struct pptp_call_clear_ntfy { /* for control message type 13 */
- struct pptp_header header;
- u_int16_t call_id; /* Call ID (used to multiplex data over tunnel)*/
- u_int8_t result_code; /* Result Code */
- u_int8_t error_code; /* Error Code (=0 unless result_code==2) */
- u_int16_t cause_code; /* Cause Code (for ISDN, is Q.931 cause code) */
- u_int16_t reserved1; /* MUST BE ZERO */
- u_int8_t call_stats[128]; /* Call Statistics: 128 octets, ascii, 0-term */
-};
-
-struct pptp_wan_err_ntfy { /* for control message type 14 */
- struct pptp_header header;
- u_int16_t call_id_peer; /* Peer's Call ID (call_id of pptp_out_call_rqst)*/
- u_int16_t reserved1; /* MUST BE ZERO */
- u_int32_t crc_errors; /* CRC errors */
- u_int32_t frame_errors; /* Framing errors */
- u_int32_t hard_errors; /* Hardware overruns */
- u_int32_t buff_errors; /* Buffer overruns */
- u_int32_t time_errors; /* Time-out errors */
- u_int32_t align_errors; /* Alignment errors */
-};
-
-struct pptp_set_link_info { /* for control message type 15 */
- struct pptp_header header;
- u_int16_t call_id_peer; /* Peer's Call ID (call_id of pptp_out_call_rqst) */
- u_int16_t reserved1; /* MUST BE ZERO */
- u_int32_t send_accm; /* Send ACCM (for PPP packets; default 0xFFFFFFFF)*/
- u_int32_t recv_accm; /* Receive ACCM (for PPP pack.;default 0xFFFFFFFF)*/
-};
-
-/* helpful #defines: -------------------------------------------- */
-#define pptp_isvalid_ctrl(header, type, length) \
- (!( ( ntoh16(((struct pptp_header *)header)->length) < (length) ) || \
- ( ntoh16(((struct pptp_header *)header)->pptp_type) !=(type) ) || \
- ( ntoh32(((struct pptp_header *)header)->magic) !=PPTP_MAGIC) || \
- ( ntoh16(((struct pptp_header *)header)->ctrl_type) > PPTP_SET_LINK_INFO) || \
- ( ntoh16(((struct pptp_header *)header)->reserved0) !=0 ) ))
-
-#define PPTP_HEADER_CTRL(type) \
-{ hton16(PPTP_CTRL_SIZE(type)), \
- hton16(PPTP_MESSAGE_CONTROL), \
- hton32(PPTP_MAGIC), \
- hton16(type), 0 }
-
-#define PPTP_CTRL_SIZE(type) ( \
-(type==PPTP_START_CTRL_CONN_RQST)?sizeof(struct pptp_start_ctrl_conn): \
-(type==PPTP_START_CTRL_CONN_RPLY)?sizeof(struct pptp_start_ctrl_conn): \
-(type==PPTP_STOP_CTRL_CONN_RQST )?sizeof(struct pptp_stop_ctrl_conn): \
-(type==PPTP_STOP_CTRL_CONN_RPLY )?sizeof(struct pptp_stop_ctrl_conn): \
-(type==PPTP_ECHO_RQST )?sizeof(struct pptp_echo_rqst): \
-(type==PPTP_ECHO_RPLY )?sizeof(struct pptp_echo_rply): \
-(type==PPTP_OUT_CALL_RQST )?sizeof(struct pptp_out_call_rqst): \
-(type==PPTP_OUT_CALL_RPLY )?sizeof(struct pptp_out_call_rply): \
-(type==PPTP_IN_CALL_RQST )?sizeof(struct pptp_in_call_rqst): \
-(type==PPTP_IN_CALL_RPLY )?sizeof(struct pptp_in_call_rply): \
-(type==PPTP_IN_CALL_CONNECT )?sizeof(struct pptp_in_call_connect): \
-(type==PPTP_CALL_CLEAR_RQST )?sizeof(struct pptp_call_clear_rqst): \
-(type==PPTP_CALL_CLEAR_NTFY )?sizeof(struct pptp_call_clear_ntfy): \
-(type==PPTP_WAN_ERR_NTFY )?sizeof(struct pptp_wan_err_ntfy): \
-(type==PPTP_SET_LINK_INFO )?sizeof(struct pptp_set_link_info): \
-0)
-#define max(a,b) (((a)>(b))?(a):(b))
-#define PPTP_CTRL_SIZE_MAX ( \
-max(sizeof(struct pptp_start_ctrl_conn), \
-max(sizeof(struct pptp_echo_rqst), \
-max(sizeof(struct pptp_echo_rply), \
-max(sizeof(struct pptp_out_call_rqst), \
-max(sizeof(struct pptp_out_call_rply), \
-max(sizeof(struct pptp_in_call_rqst), \
-max(sizeof(struct pptp_in_call_rply), \
-max(sizeof(struct pptp_in_call_connect), \
-max(sizeof(struct pptp_call_clear_rqst), \
-max(sizeof(struct pptp_call_clear_ntfy), \
-max(sizeof(struct pptp_wan_err_ntfy), \
-max(sizeof(struct pptp_set_link_info), 0)))))))))))))
-
-
-/* gre header structure: -------------------------------------------- */
-
-#define PPTP_GRE_PROTO 0x880B
-#define PPTP_GRE_VER 0x1
-
-#define PPTP_GRE_FLAG_C 0x80
-#define PPTP_GRE_FLAG_R 0x40
-#define PPTP_GRE_FLAG_K 0x20
-#define PPTP_GRE_FLAG_S 0x10
-#define PPTP_GRE_FLAG_A 0x80
-
-#define PPTP_GRE_IS_C(f) ((f)&PPTP_GRE_FLAG_C)
-#define PPTP_GRE_IS_R(f) ((f)&PPTP_GRE_FLAG_R)
-#define PPTP_GRE_IS_K(f) ((f)&PPTP_GRE_FLAG_K)
-#define PPTP_GRE_IS_S(f) ((f)&PPTP_GRE_FLAG_S)
-#define PPTP_GRE_IS_A(f) ((f)&PPTP_GRE_FLAG_A)
-
-struct pptp_gre_header {
- u_int8_t flags; /* bitfield */
- u_int8_t ver; /* should be PPTP_GRE_VER (enhanced GRE) */
- u_int16_t protocol; /* should be PPTP_GRE_PROTO (ppp-encaps) */
- u_int16_t payload_len; /* size of ppp payload, not inc. gre header */
- u_int16_t call_id; /* peer's call_id for this session */
- u_int32_t seq; /* sequence number. Present if S==1 */
- u_int32_t ack; /* seq number of highest packet recieved by */
- /* sender in this session */
-};
-
-#endif /* INC_PPTP_H */
diff --git a/pppd_plugin/src/pptp_options.h b/pppd_plugin/src/pptp_options.h
deleted file mode 100644
index ebc1c31..0000000
--- a/pppd_plugin/src/pptp_options.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* pptp_options.h ...... various constants used in the PPTP protocol.
- * #define STANDARD to emulate NT 4.0 exactly.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: pptp_options.h,v 1.3 2004/11/09 01:42:32 quozl Exp $
- */
-
-#ifndef INC_PPTP_OPTIONS_H
-#define INC_PPTP_OPTIONS_H
-
-#undef PPTP_FIRMWARE_STRING
-#undef PPTP_FIRMWARE_VERSION
-#define PPTP_BUF_MAX 65536
-#define PPTP_TIMEOUT 60 /* seconds */
-extern int idle_wait;
-extern int max_echo_wait;
-#define PPTP_CONNECT_SPEED 1000000000
-#define PPTP_WINDOW 3
-#define PPTP_DELAY 0
-#define PPTP_BPS_MIN 2400
-#define PPTP_BPS_MAX 1000000000
-
-#ifndef STANDARD
-#define PPTP_MAX_CHANNELS 65535
-#define PPTP_FIRMWARE_STRING "0.01"
-#define PPTP_FIRMWARE_VERSION 0x001
-#define PPTP_HOSTNAME {'l','o','c','a','l',0}
-#define PPTP_VENDOR {'c','a','n','a','n','i','a','n',0}
-#define PPTP_FRAME_CAP PPTP_FRAME_ANY
-#define PPTP_BEARER_CAP PPTP_BEARER_ANY
-#else
-#define PPTP_MAX_CHANNELS 5
-#define PPTP_FIRMWARE_STRING "0.01"
-#define PPTP_FIRMWARE_VERSION 0
-#define PPTP_HOSTNAME {'l','o','c','a','l',0}
-#define PPTP_VENDOR {'N','T',0}
-#define PPTP_FRAME_CAP 2
-#define PPTP_BEARER_CAP 1
-#endif
-
-#endif /* INC_PPTP_OPTIONS_H */
diff --git a/pppd_plugin/src/pptp_quirks.c b/pppd_plugin/src/pptp_quirks.c
deleted file mode 100644
index e4c9013..0000000
--- a/pppd_plugin/src/pptp_quirks.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* pptp_quirks.c ...... various options to fix quirks found in buggy adsl modems
- * mulix <mulix@actcom.co.il>
- *
- * $Id: pptp_quirks.c,v 1.2 2001/11/23 03:42:51 quozl Exp $
- */
-
-#include <string.h>
-#include "orckit_quirks.h"
-#include "pptp_quirks.h"
-
-static int quirk_index = -1;
-
-struct pptp_fixup pptp_fixups[] = {
- {BEZEQ_ISRAEL, ORCKIT, ORCKIT_ATUR3,
- orckit_atur3_build_hook,
- orckit_atur3_start_ctrl_conn_hook,
- orckit_atur3_set_link_hook}
-};
-
-static int fixups_sz = sizeof(pptp_fixups)/sizeof(pptp_fixups[0]);
-
-/* return 0 on success, non 0 otherwise */
-int set_quirk_index(int index)
-{
- if (index >= 0 && index < fixups_sz) {
- quirk_index = index;
- return 0;
- }
-
- return -1;
-}
-
-int get_quirk_index()
-{
- return quirk_index;
-}
-
-/* return the index for this isp in the quirks table, -1 if not found */
-int find_quirk(const char* isp_name)
-{
- int i = 0;
- if (isp_name) {
- while (i < fixups_sz && pptp_fixups[i].isp) {
- if (!strcmp(pptp_fixups[i].isp, isp_name)) {
- return i;
- }
- ++i;
- }
- }
-
- return -1;
-}
-
-
diff --git a/pppd_plugin/src/pptp_quirks.h b/pppd_plugin/src/pptp_quirks.h
deleted file mode 100644
index 291f3d6..0000000
--- a/pppd_plugin/src/pptp_quirks.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* pptp_quirks.h ...... various options to fix quirks found in buggy adsl modems
- * mulix <mulix@actcom.co.il>
- *
- * $Id: pptp_quirks.h,v 1.1 2001/11/20 06:30:10 quozl Exp $
- */
-
-#ifndef INC_PPTP_QUIRKS_H
-#define INC_PPTP_QUIRKS_H
-
-/* isp defs - correspond to slots in the fixups table */
-#define BEZEQ_ISRAEL "BEZEQ_ISRAEL"
-
-/* vendor defs */
-
-#define ORCKIT 1
-#define ALCATEL 2
-
-/* device defs */
-
-#define ORCKIT_ATUR2 1
-#define ORCKIT_ATUR3 2
-
-#include "pptp_msg.h"
-#include "pptp_ctrl.h"
-
-struct pptp_fixup {
- const char* isp; /* which isp? e.g. Bezeq in Israel */
- int vendor; /* which vendor? e.g. Orckit */
- int device; /* which device? e.g. Orckit Atur3 */
-
- /* use this hook to build your own out call request packet */
- int (*out_call_rqst_hook)(struct pptp_out_call_rqst* packet);
-
- /* use this hook to build your own start control connection packet */
- /* note that this hook is called from two different places, depending
- on whether this is a request or reply */
- int (*start_ctrl_conn)(struct pptp_start_ctrl_conn* packet);
-
- /* use this hook if you need to send a 'set_link' packet once
- the connection is established */
- int (*set_link_hook)(struct pptp_set_link_info* packet,
- int peer_call_id);
-};
-
-extern struct pptp_fixup pptp_fixups[];
-
-/* find the index for this isp in the quirks table */
-/* return the index on success, -1 if not found */
-int find_quirk(const char* isp_name);
-
-/* set the global quirk index. return 0 on success, non 0 otherwise */
-int set_quirk_index(int index);
-
-/* get the global quirk index. return the index on success,
- -1 if no quirk is defined */
-int get_quirk_index();
-
-
-#endif /* INC_PPTP_QUIRKS_H */
diff --git a/pppd_plugin/src/util.c b/pppd_plugin/src/util.c
deleted file mode 100644
index dabddbe..0000000
--- a/pppd_plugin/src/util.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* util.c ....... error message utilities.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: util.c,v 1.11 2005/08/22 00:49:48 quozl Exp $
- */
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <syslog.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include "util.h"
-
-#ifndef PROGRAM_NAME
-#define PROGRAM_NAME "pptp"
-#endif
-
-/* implementation of log_string, defined as extern in util.h */
-char *log_string = "anon";
-
-static void open_log(void) __attribute__ ((constructor));
-static void close_log(void) __attribute__ ((destructor));
-
-#define MAKE_STRING(label) \
-va_list ap; \
-char buf[256], string[256]; \
-va_start(ap, format); \
-vsnprintf(buf, sizeof(buf), format, ap); \
-snprintf(string, sizeof(string), "%s %s[%s:%s:%d]: %s", \
- log_string, label, func, file, line, buf); \
-va_end(ap)
-
-/*** open log *****************************************************************/
-static void open_log(void) {
- openlog(PROGRAM_NAME, LOG_PID, LOG_DAEMON);
-}
-
-/*** close log ****************************************************************/
-static void close_log(void)
-{
- closelog();
-}
-
-/*** print a message to syslog ************************************************/
-void _log(const char *func, const char *file, int line, const char *format, ...)
-{
- MAKE_STRING("log");
- open_log();
- syslog(LOG_NOTICE, "%s", string);
- close_log();
-}
-
-/*** print a warning to syslog ************************************************/
-void _warn(const char *func, const char *file, int line, const char *format, ...)
-{
- MAKE_STRING("warn");
- open_log();
- fprintf(stderr, "%s\n", string);
- syslog(LOG_WARNING, "%s", string);
- close_log();
-}
-
-/*** print a fatal warning to syslog and exit *********************************/
-void _fatal(const char *func, const char *file, int line, const char *format, ...)
-{
- MAKE_STRING("fatal");
- fprintf(stderr, "%s\n", string);
- syslog(LOG_CRIT, "%s", string);
- exit(1);
-}
-
-/*** connect a file to a file descriptor **************************************/
-int file2fd(const char *path, const char *mode, int fd)
-{
- int ok = 0;
- FILE *file = NULL;
- file = fopen(path, mode);
- if (file != NULL && dup2(fileno(file), fd) != -1)
- ok = 1;
- if (file) fclose(file);
- return ok;
-}
-
-/* signal to pipe delivery implementation */
-#include <unistd.h>
-#include <fcntl.h>
-#include <signal.h>
-#include <string.h>
-
-/* pipe private to process */
-static int sigpipe[2];
-
-/* create a signal pipe, returns 0 for success, -1 with errno for failure */
-int sigpipe_create()
-{
- int rc;
-
- rc = pipe(sigpipe);
- if (rc < 0) return rc;
-
- fcntl(sigpipe[0], F_SETFD, FD_CLOEXEC);
- fcntl(sigpipe[1], F_SETFD, FD_CLOEXEC);
-
-#ifdef O_NONBLOCK
-#define FLAG_TO_SET O_NONBLOCK
-#else
-#ifdef SYSV
-#define FLAG_TO_SET O_NDELAY
-#else /* BSD */
-#define FLAG_TO_SET FNDELAY
-#endif
-#endif
-
- rc = fcntl(sigpipe[1], F_GETFL);
- if (rc != -1)
- rc = fcntl(sigpipe[1], F_SETFL, rc | FLAG_TO_SET);
- if (rc < 0) return rc;
- return 0;
-#undef FLAG_TO_SET
-}
-
-/* generic handler for signals, writes signal number to pipe */
-void sigpipe_handler(int signum)
-{
- write(sigpipe[1], &signum, sizeof(signum));
- signal(signum, sigpipe_handler);
-}
-
-/* assign a signal number to the pipe */
-void sigpipe_assign(int signum)
-{
- struct sigaction sa;
-
- memset(&sa, 0, sizeof(sa));
- sa.sa_handler = sigpipe_handler;
- sigaction(signum, &sa, NULL);
-}
-
-/* return the signal pipe read file descriptor for select(2) */
-int sigpipe_fd()
-{
- return sigpipe[0];
-}
-
-/* read and return the pending signal from the pipe */
-int sigpipe_read()
-{
- int signum;
- read(sigpipe[0], &signum, sizeof(signum));
- return signum;
-}
-
-void sigpipe_close()
-{
- close(sigpipe[0]);
- close(sigpipe[1]);
-}
-
diff --git a/pppd_plugin/src/util.h b/pppd_plugin/src/util.h
deleted file mode 100644
index 1ed5079..0000000
--- a/pppd_plugin/src/util.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* util.h ....... error message utilities.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: util.h,v 1.6 2005/03/10 01:18:20 quozl Exp $
- */
-
-#ifndef INC_UTIL_H
-#define INC_UTIL_H
-
-/* log_string is an identifier for this pptp process, passed from
- command line using --log-string=X, and included with every log message.
- Useful for people with multiple pptp sessions open at a time */
-extern char * log_string;
-
-/* log_level sets the logging verbosity. Values range from 0 (errors only)
- to 1 (errors and warnings) to 2 (high verbosity, for debugging) */
-extern int log_level;
-
-void _log(const char *func, const char *file, int line, const char *format, ...)
- __attribute__ ((format (printf, 4, 5)));
-void _warn(const char *func, const char *file, int line, const char *format, ...)
- __attribute__ ((format (printf, 4, 5)));
-void _fatal(const char *func, const char *file, int line, const char *format, ...)
- __attribute__ ((format (printf, 4, 5))) __attribute__ ((noreturn));
-
-#define log(format, args...) \
- _log(__FUNCTION__,__FILE__,__LINE__, format , ## args)
-#define warn(format, args...) \
- _warn(__FUNCTION__,__FILE__,__LINE__, format , ## args)
-#define fatal(format, args...) \
- _fatal(__FUNCTION__,__FILE__,__LINE__, format , ## args)
-
-int file2fd(const char *path, const char *mode, int fd);
-
-/* signal to pipe delivery implementation */
-
-/* create a signal pipe, returns 0 for success, -1 with errno for failure */
-int sigpipe_create();
-
-/* generic handler for signals, writes signal number to pipe */
-void sigpipe_handler(int signum);
-
-/* assign a signal number to the pipe */
-void sigpipe_assign(int signum);
-
-/* return the signal pipe read file descriptor for select(2) */
-int sigpipe_fd();
-
-/* read and return the pending signal from the pipe */
-int sigpipe_read();
-
-void sigpipe_close();
-
-#endif /* INC_UTIL_H */
diff --git a/pppd_plugin/src/vector.c b/pppd_plugin/src/vector.c
deleted file mode 100644
index a26c5de..0000000
--- a/pppd_plugin/src/vector.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* vector.c ..... store a vector of PPTP_CALL information and search it
- * efficiently.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: vector.c,v 1.3 2003/06/17 10:12:55 reink Exp $
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include "pptp_ctrl.h"
-#include "vector.h"
-/* #define VECTOR_DEBUG */
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-struct vector_item {
- int key;
- PPTP_CALL *call;
-};
-
-struct vector_struct {
- struct vector_item *item;
- int size;
- int alloc;
-#ifdef VECTOR_DEBUG
- int key_max;
-#endif
-};
-
-static struct vector_item *binary_search(VECTOR *v, int key);
-
-/*** vector_create ************************************************************/
-VECTOR *vector_create()
-{
- const int INITIAL_SIZE = 4;
-
- VECTOR *v = malloc(sizeof(*v));
- if (v == NULL) return v;
-
- v->size = 0;
- v->alloc = INITIAL_SIZE;
- v->item = malloc(sizeof(*(v->item)) * (v->alloc));
-#ifdef VECTOR_DEBUG
- v->key_max = -1;
-#endif
- if (v->item == NULL) { free(v); return NULL; }
- else return v;
-}
-
-/*** vector_destroy ***********************************************************/
-void vector_destroy(VECTOR *v)
-{
- free(v->item);
-#ifdef VECTOR_DEBUG
- v->item = NULL;
-#endif
- free(v);
-}
-
-/*** vector_size **************************************************************/
-int vector_size(VECTOR *v)
-{
- assert(v != NULL);
- return v->size;
-}
-
-/*** vector_insert*************************************************************
- * nice thing about file descriptors is that we are assured by POSIX
- * that they are monotonically increasing.
- */
-int vector_insert(VECTOR *v, int key, PPTP_CALL * call)
-{
- int i;
- assert(v != NULL && call != NULL);
- assert(!vector_contains(v, key));
-#ifdef VECTOR_DEBUG
- assert(v->key_max < key);
-#endif
- if (!(v->size < v->alloc)) {
- void *tmp = realloc(v->item, sizeof(*(v->item)) * 2 * v->alloc);
- if (tmp != NULL) {
- v->alloc *= 2;
- v->item = tmp;
- } else return FALSE; /* failed to alloc memory. */
- }
- assert(v->size < v->alloc);
- /* for safety, we make this work in the general case;
- * but this is optimized for adding call to the end of the vector.
- */
- for(i = v->size - 1; i >= 0; i--)
- if (v->item[i].key < key)
- break;
- /* insert after item i */
- memmove(&v->item[i + 2], &v->item[i + 1],
- (v->size - i - 1) * sizeof(*(v->item)));
- v->item[i + 1].key = key;
- v->item[i + 1].call = call;
- v->size++;
-#ifdef VECTOR_DEBUG
- if (v->key_max < key) /* ie, always. */
- v->key_max = key;
-#endif
- return TRUE;
-}
-
-/*** vector_remove ************************************************************/
-int vector_remove(VECTOR *v, int key)
-{
- struct vector_item *tmp;
- assert(v != NULL);
- if ((tmp =binary_search(v,key)) == NULL) return FALSE;
- assert(tmp >= v->item && tmp < v->item + v->size);
- memmove(tmp, tmp + 1, (v->size - (v->item - tmp) - 1) * sizeof(*(v->item)));
- v->size--;
- return TRUE;
-}
-
-/*** vector_search ************************************************************/
-int vector_search(VECTOR *v, int key, PPTP_CALL **call)
-{
- struct vector_item *tmp;
- assert(v != NULL);
- tmp = binary_search(v, key);
- if (tmp ==NULL) return FALSE;
- *call = tmp->call;
- return TRUE;
-}
-
-/*** vector_contains **********************************************************/
-int vector_contains(VECTOR *v, int key)
-{
- assert(v != NULL);
- return (binary_search(v, key) != NULL);
-}
-
-/*** vector_item **************************************************************/
-static struct vector_item *binary_search(VECTOR *v, int key)
-{
- int l,r,x;
- l = 0;
- r = v->size - 1;
- while (r >= l) {
- x = (l + r)/2;
- if (key < v->item[x].key) r = x - 1; else l = x + 1;
- if (key == v->item[x].key) return &(v->item[x]);
- }
- return NULL;
-}
-
-/*** vector_scan ***************************************************************
- * Hmm. Let's be fancy and use a binary search for the first
- * unused key, taking advantage of the list is stored sorted; ie
- * we can look at pointers and keys at two different locations,
- * and if (ptr1 - ptr2) = (key1 - key2) then all the slots
- * between ptr1 and ptr2 are filled. Note that ptr1-ptr2 should
- * never be greater than key1-key2 (no duplicate keys!)... we
- * check for this.
- */
-int vector_scan(VECTOR *v, int lo, int hi, int *key)
-{
- int l,r,x;
- assert(v != NULL);
- assert(key != NULL);
- if ((v->size<1) || (lo < v->item[0].key)) { *key = lo; return TRUE; }
- /* our array bounds */
- l = 0; r = v->size - 1;
- while (r > l) {
- /* check for a free spot right after l */
- if (v->item[l].key + 1 < v->item[l + 1].key) { /* found it! */
- *key = v->item[l].key + 1;
- return TRUE;
- }
- /* no dice. Let's see if the free spot is before or after the midpoint */
- x = (l + r)/2;
- /* Okay, we have right (r), left (l) and the probe (x). */
- assert(x - l <= v->item[x].key - v->item[l].key);
- assert(r - x <= v->item[r].key - v->item[x].key);
- if (x - l < v->item[x].key - v->item[l].key)
- /* room between l and x */
- r = x;
- else /* no room between l and x */
- if (r - x < v->item[r].key - v->item[x].key)
- /* room between x and r */
- l = x;
- else /* no room between x and r, either */
- break; /* game over, man. */
- }
- /* no room found in already allocated space. Check to see if
- * there's free space above allocated entries. */
- if (v->item[v->size - 1].key < hi) {
- *key = v->item[v->size - 1].key + 1;
- return TRUE;
- }
- /* outta luck */
- return FALSE;
-}
-
-/*** vector_get_Nth ***********************************************************/
-PPTP_CALL * vector_get_Nth(VECTOR *v, int n)
-{
- assert(v != NULL);
- assert(0 <= n && n < vector_size(v));
- return v->item[n].call;
-}
diff --git a/pppd_plugin/src/vector.h b/pppd_plugin/src/vector.h
deleted file mode 100644
index b18899f..0000000
--- a/pppd_plugin/src/vector.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* vector.h ..... store a vector of PPTP_CALL information and search it
- * efficiently.
- * C. Scott Ananian <cananian@alumni.princeton.edu>
- *
- * $Id: vector.h,v 1.1.1.1 2000/12/23 08:19:51 scott Exp $
- */
-
-#ifndef INC_VECTOR_H
-#define INC_VECTOR_H
-
-#include "pptp_ctrl.h" /* for definition of PPTP_CALL */
-
-typedef struct vector_struct VECTOR;
-
-VECTOR *vector_create();
-void vector_destroy(VECTOR *v);
-
-int vector_size(VECTOR *v);
-
-/* vector_insert and vector_search return TRUE on success, FALSE on failure. */
-int vector_insert(VECTOR *v, int key, PPTP_CALL * call);
-int vector_remove(VECTOR *v, int key);
-int vector_search(VECTOR *v, int key, PPTP_CALL ** call);
-/* vector_contains returns FALSE if not found, TRUE if found. */
-int vector_contains(VECTOR *v, int key);
-/* find first unused key. Returns TRUE on success, FALSE if no. */
-int vector_scan(VECTOR *v, int lo, int hi, int *key);
-/* get a specific PPTP_CALL ... useful only when iterating. */
-PPTP_CALL * vector_get_Nth(VECTOR *v, int n);
-
-#endif /* INC_VECTOR_H */